2011-01-13 14 views
77

Cosa c'è di sbagliato in quanto segue?Conversione del formato DateTime usando il rasoio

@Convert.ToDateTime((@item.Date.ToShortDateString())," dd - M - yy") 

@ item.Date sta mostrando 20/11/2005 12:00 e voglio visualizzare 20 Nov 2011

+1

combinazioni dei vari identificatori di formato data che esistono si possono trovare qui: http: // msdn.microsoft.com/en-us/library/8kb3ddd4.aspx –

risposta

207

Prova:

@item.Date.ToString("dd MMM yyyy") 

o si può utilizzare l'attributo [DisplayFormat] sulla vista del modello:

[DisplayFormat(DataFormatString = "{0:dd MMM yyyy}")] 
public DateTime Date { get; set } 

e nella vista semplice:

@Html.DisplayFor(x => x.Date) 
+3

Ho provato questo con una casella di testo e sfortunatamente non ha funzionato. C'è un modo per farlo per le caselle di testo? – Tobias

+2

Per una casella di testo è sufficiente utilizzare EditorFor anziché DisplayFor –

+6

Ricordarsi di impostare "ApplyFormatInEditMode = true" nella definizione DisplayFormat se si desidera applicare la formattazione della data agli elementi di EditorFor(). – Latedeveloper

2

In generale, il mese scritta è sfuggito come MMM, l'anno a 4 cifre come aaaa, quindi la tua stringa di formato dovrebbe essere simile "MMM yyyy dd"

DateTime.ToString("dd MMM yyyy") 
+0

@ ViewBag.PurchaseInfo.LastPurchaseTime.ToString ("gg.mm.aaaa") – yonexbat

54

Questa è la soluzione:

@item.Published.Value.ToString("dd. MM. yyyy") 

Prima ToString() uso Valore.

+0

Grazie Miroslav, questo funziona per me. –

+1

questo codice è corretto, ma se la colonna della data è nulla, questo sarà gettare errore, in modo da provare [questo] (http://stackoverflow.com/a/29742649/2218697) – stom

+0

Stom è corretta, se si dispone di valori nulli getteranno tu l'errore, grazie per il link –

18

L'attributo [DisplayFormat] viene utilizzato solo in EditorFor/DisplayFor e non dalle API HTML non formattate come TextBoxFor. Ho ottenuto che funziona facendo quanto segue,

Modello:

[Display(Name = "When was that document issued ?")] 
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:d}")] 
public DateTime? LiquorLicenceDocumentIssueDate { get; set; } 

Vista:

 <div id="IsLiquorLicenceDocumentOnPremisesYes" class="groupLongLabel"> 
      @Html.LabelFor(m => m.LiquorLicenceDocumentIssueDate) 
      <span class="indicator"></span> 
      @Html.EditorFor(m => m.LiquorLicenceDocumentIssueDate) 
      <span id="validEmail"></span> 
      <br /> 
      @Html.ValidationMessageFor(m => m.LiquorLicenceDocumentIssueDate) 
     </div> 

di uscita: 30/12/2011

Link correlati:

http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.displayformatattribute.applyformatineditmode.aspx

+1

In alternativa, si potrebbe anche usare @ string.Format ("{0: MM AAAA}", imprint.VersionDate) –

3

Per Razor, inserire il file DateTime.cshtml nella cartella Views/Shared/EditorTemplates. DateTime.cshtml contiene due righe e produce un TextBox con una data formattata l'11 settembre 2001.

@model DateTime? 
@Html.TextBox("", (Model.HasValue ? Model.Value.ToShortDateString() : string.Empty), new { @class = "datePicker" }) 
18

Prova questo in MVC 4,0

@Html.TextBoxFor(m => m.YourDate, "{0:dd/MM/yyyy}", new { @class = "datefield form-control", @placeholder = "Enter start date..." }) 
+1

Perché questo downvoted? – cdmckay

+2

Non so perché qualcuno invertire questa risposta. –

+0

Vorrei assumere il downvote era dovuto a questa soluzione la formattazione della data come il formato "dd MMM yyyy" che il PO ha richiesto – PTD

2

sottostante Codice vi aiuterà a

@Html.Label(@item.Date.Value.ToString("dd - M - yy")) 
Problemi correlati