DateTime.Now.ToString ("JJJJ-MM-TT HH: MM: SS") gibt AM-Zeit anstelle von PM-Zeit zurück?

75

Ich versuche die aktuelle Zeit über zu bekommen DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")

Dies spuckt jedoch eine Zeit von 12 Stunden aus, was wir wollen.

Zum Beispiel:

Was es ausspuckt: 11/14/2011 2:24:56 am

Was wir wollen: 11/14/2011 2:24:56 pm

Welchen Noob-Fehler machen wir?

Jede Hilfe wird sehr geschätzt :)

Adam Houldsworth
quelle
2
Wo wird der am / pm-Marker hinzugefügt, da er nicht in Ihrer Formatierungszeichenfolge enthalten ist, z. B. 'tt'?
Shaun Wilde
7
Aus irgendeinem Grund unterscheidet sich das, was Sie sagen, dass die Formatzeichenfolge produziert ( 11/14/2011 2:24:56 am), sehr von dem, was ich von der Formatzeichenfolge erwarten würde, die Sie gepostet haben ( yyyy-MM-dd hh:mm:ss). Bist du dir da sicher?
Oded

Antworten:

175

Verwenden Sie HHfür 24 Stunden Stunden Format:

DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")

Oder der ttFormatbezeichner für das AM/PMTeil:

DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss tt")

Sehen Sie sich die Dokumentation zu benutzerdefinierten Zeichenfolgen im Datums- und Zeitformat an .

Oded
quelle
Ich musste MomentJS nur verwenden, um das zu tun, das spart verdammt viel Zeit :)
Shekhar K. Sharma
5

Mit C # 6.0 haben Sie auch eine neue Möglichkeit, das Datum zu formatieren, wenn Sie die Zeichenfolgeninterpolation verwenden, z

$"{DateTime.Now:yyyy-MM-dd HH:mm:ss}"

Ich kann nicht sagen, dass es besser ist, aber es ist etwas sauberer, wenn die formatierte DateTime in eine längere Zeichenfolge eingefügt wird.

Weitere Informationen zur String-Interpolation.

Callum
quelle