Warum gibt mir DateTime.ToString ("TT / MM / JJJJ") TT-MM-JJJJ?


155

Ich möchte, dass meine Datums- und Uhrzeitangabe in eine Zeichenfolge im Format "TT / MM / JJJJ" konvertiert wird.

Immer wenn ich es mit konvertiere DateTime.ToString("dd/MM/yyyy"), bekomme ich dd-MM-yyyystattdessen.

Gibt es eine Art Kulturinformation, die ich einstellen muss?


do DateTime.ToString ("TT / MM / JJJJ");
Jimplode

2
Ich habe das getan, es hat nicht funktioniert, das Problem sind nicht die Daten, es ist das "-", ich möchte, dass es ein "/" ist, wie ich es angegeben habe
Diskdrive

7
Verwenden Sie MM anstelle von mm - mm steht für Minuten und nicht für Monate.
Lloyd Powell


Die MSDN-Dokumentation für DateTime.ToString ist hoffnungslos falsch: " Beispielsweise zeigt die Formatzeichenfolge" MM / TT / JJJJHH: MM "die Datums- und Zeitzeichenfolge in einem festen Format an ... Die Formatzeichenfolge verwendet" / "als festes Format Datumstrennzeichen unabhängig von kulturspezifischen Einstellungen. "
Colonel Panic

Antworten:


243

Ein Schrägstrich ist ein Datumsbegrenzer, sodass der aktuelle Kultur-Datumsbegrenzer verwendet wird.

Wenn Sie es fest codieren möchten, um immer einen Schrägstrich zu verwenden, können Sie Folgendes tun:

DateTime.ToString("dd'/'MM'/'yyyy")

2
@spender - in einigen Kulturen sind sie.
Daniel A. White

Danke für deine schnelle Antwort. Du hast recht. Ich gebe Ihnen die richtige Antwort
Diskdrive

6
Sie können auch dieses Format verwenden: dateTime.ToString (@ "yyyy \ / MM \ / dd")
base2


2
Das Escapezeichen der Formatzeichenfolge mit Backslash funktioniert auch: DateTime.Now.ToString ("TT \\ / MM \\ / JJJJ");
TomB

61

Übergeben Sie CultureInfo.InvariantCulture als zweiten Parameter von Datetime, wird er die Zeichenkette zurück, was Sie wollen, auch ein ganz besonderes Format:

DateTime.Now.ToString("dd|MM|yyyy", CultureInfo.InvariantCulture)

wird zurückkehren: 28 | 02 | 2014


Dieser Code ist klarer als in der akzeptierten Antwort (ich meine, CultureInfo hinzugefügt). Es sieht zumindest besser aus, als den Schrägen durch Apostrophe zu entkommen.
Sergey

2
Auf jeden Fall einfacher zu lesen als Escapezeichen. Ich bin ein bisschen schockiert, dass ich nicht die ganze Zeit wusste, dass meine Datumsformate überschrieben werden würden!
Savage

10

Fügen Sie CultureInfo.InvariantCultureals Argument:

using System.Globalization;

...

var dateTime = new DateTime(2016,8,16);
dateTime.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);

Wird zurückkehren:

"16/08/2016"

Wenn der Entwickler die Zeichenfolgenmethode mit einigen Buchstaben wie M m ss usw. verwendet, wird mit Ihrer Lösung ein falsches Ergebnis erzielt, z. B. Datetime.Now.ToString ("JJJJ / TT / MM / Monat", CultureInfo.InvariantCulture) wird 2017/01 nicht angezeigt / 02 / Monat wird es 2017/01/02 / 2onth
Okan SARICA

@OkanSARICA Wenn Sie das Datum mit "/ Monat" versehen möchten, sollten Sie dies stattdessen nach der ToString-Methode tun. DateTime.Now.ToString (”JJJJ / MM / TT”, CultureInfo.InvariantCulture) + ”/ Monat”;
Mikael Engver

1

Wenn Sie MVC-Tabellen verwenden, funktioniert dies folgendermaßen:

<td>@(((DateTime)detalle.fec).ToString("dd'/'MM'/'yyyy"))</td>

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.