DateTime.ToString () -Format, das in einem Dateinamen oder einer Erweiterung verwendet werden kann?


99

Ich möchte Dateinamen beim Erstellen von Dateien einen Zeitstempel hinzufügen, aber bei den meisten DateTime-Methoden habe ich versucht, etwas mit Leerzeichen und Schrägstrichen auszugeben. Zum Beispiel:

Debug.WriteLine(DateTime.Now.ToString()); // <-- 9/19/2012 1:41:46 PM
Debug.WriteLine(DateTime.Now.ToShortTimeString()); // <-- 1:41 PM
Debug.WriteLine(DateTime.Now.ToShortDateString()); // <-- 9/19/2012
Debug.WriteLine(DateTime.Now.ToFileTime()); // <-- 129925501061462806

ToFileTime()funktioniert aber ist nicht gerade lesbar. Wie kann ich die Ausgabe in einen für Menschen lesbaren Zeitstempel mit Datum und Uhrzeit formatieren, der in einem Dateinamen oder einer Erweiterung verwendet werden kann? Am liebsten so etwas wie 2011-19-9--13-45-30?


2
Wie wäre es damit ... DateTime.Now.ToString ("JJJJ-MM-TT - HH-MM-SS")
Gene S

Antworten:


176

Sie können dies verwenden:

DateTime.Now.ToString("yyyy-dd-M--HH-mm-ss");

5
Weitere Beispiele / Optionen finden Sie hier: geekzilla.co.uk/View00FF7904-B510-468C-A2C8-F859AA20581F.htm
Kristof Claes

1
Ich denke, wenn man bedenkt, dass die UTC-Zeit besser wäre
RealSteel

89
Schlagen Sie ernsthaft vor, den Tag zwischen Jahr und Monat zu haben?
Kjbartel

10
Noch unentschuldbarer in einem Dateinamen, da die Liste der Dateien nicht nach Namen sortiert werden kann, um sie in der Reihenfolge von Datum und Uhrzeit zu erhalten. Am signifikantesten bis am wenigsten signifikant sollte die Tagesordnung sein.
Bernhard Hofmann

4
@Matt - Sie gehen davon aus, dass der Dateiname mit dem Erstellungs- / Änderungs- / Zugriffsdatum zusammenhängt, was nicht immer der Fall ist.
Bernhard Hofmann

121

Ich würde das ISO 8601- Format ohne Trennzeichen verwenden:

DateTime.Now.ToString("yyyyMMddTHHmmss")

7
Wenn Sie verwenden DateTime.Now.ToString("o"), erhalten Sie yyyy-MM-ddTHH:mm:ss.fffffff-HH:mm(wobei der letzte Stunden- und Minutenversatz +/- GMT beträgt). Zugegeben, dies würde nicht als Dateinamenformat funktionieren, aber die "o"Formatierung ist gut zu wissen.
Krillgar

16

Ich habe eine ähnliche Situation, aber ich möchte eine konsistente Möglichkeit, DateTime.Parse auch aus dem Dateinamen verwenden zu können, also habe ich mitgemacht

DateTime.Now.ToString("s").Replace(":", ".") // <-- 2016-10-25T16.50.35

Wenn ich analysieren möchte, kann ich den Ersetzen-Aufruf einfach umkehren. Auf diese Weise muss ich keine yymmdd-Inhalte eingeben oder erraten, welche Formate DateTime.Parse zulässt.


8

Die folgende Liste der am häufigsten verwendeten Zeitformatspezifizierer.,.

dd - Tag des Monats von 01 bis 31.

MM - Monat von 01 bis 12.

JJJJ - Jahr als vierstellige Zahl.

hh - Stunde im 12-Stunden- Format von 01 bis 12 Uhr.

mm - Minute von 00 bis 59.

ss - zweitens von 00 bis 59.

HH - Stunde im 24-Stunden- Takt von 00 bis 23.

tt - AM / PM- Bezeichnung.

Mit den oben genannten Informationen können Sie Ihrem Dateinamen einen eindeutigen Namen geben.

Hier habe ich ein Beispiel gegeben

string fileName = "fileName_" + DateTime.Now.ToString("MM-dd-yyyy_hh-mm-ss-tt") + ".pdf";

ODER

Wenn Sie keine Symbole bevorzugen, können Sie dies auch versuchen.

string fileName = "fileName_" + DateTime.Now.ToString("MMddyyyyhhmmsstt") + ".pdf";

Hoffe, das hilft jemandem jetzt oder in Zukunft. :) :)


7

Persönlich mag ich es so:

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

Weil es zwischen Datum und Uhrzeit unterscheidet.


1
Ich denke du meinst "JJJJ-MM-TT HH.mm.ss"
Filimindji

3

Sie können mit versuchen

var result = DateTime.Now.ToString("yyyy-MM-d--HH-mm-ss");

2

Sie können einen Pfad für Ihre Datei wie folgt erstellen:

string path = "fileName-"+DateTime.Now.ToString("yyyy-dd-M--HH-mm-ss") + ".txt";

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.