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?

pdizz
quelle
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");
Kristof Claes
quelle
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")
Christoffer Lette
quelle
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.

Gabe Haack
quelle
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. :) :)

RajeshKdev
quelle
7

Persönlich mag ich es so:

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

Weil es zwischen Datum und Uhrzeit unterscheidet.

Charles Clayton
quelle
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");
Aghilas Yakoub
quelle
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";
Rouhollah Ghasempour
quelle
2

Verwenden der Interpolationszeichenfolge und des Formatbezeichners :

var filename = $"{DateTime.Now:yyyy.dd.M HH-mm-ss}"

Oder wenn Sie nicht in Amerika sind:

var filename = $"{DateTime.Now:yyyy.M.dd HH-mm-ss}"

Diese Funktion ist in C # 6 und späteren Versionen der Sprache verfügbar.

Hühnerfüße
quelle