Dies ist eine etwas subjektive Frage, die im großen Schema der Dinge nicht sehr wichtig ist, aber mich dennoch regelmäßig nervt. Es scheint keine selbstverständliche Möglichkeit zu geben, einen Zeitstempel in einen Dateinamen einzufügen .
Ziel ist, dass Zeitstempel in Dateinamen sortierbar sein sollten . In .NET sortierbare Datumsformate wie "s" ( "yyyy-MM-ddTHH:mm:ss"
) und "u" ( "yyyy-MM-dd HH:mm:ssZ"
) sind jedoch in Dateinamen aufgrund von ':' Zeichen nicht gültig.
Eine andere Sache ist, dass Sie leicht sehen sollten, ob universelle oder lokale Zeit verwendet wird. In der Praxis scheinen Benutzer die Ortszeit der Weltzeit vorzuziehen.
Ich habe meistens ISO 8601 mit dem grundlegenden Zeitformat verwendet:
- Lokale Zeitformatzeichenfolge
"yyyy-MM-ddTHHmmsszz"
- Zeichenfolge im UTC-Format
"yyyy-MM-ddTHHmmssZ"
In diesen Formaten wäre meine aktuelle Ortszeit "2009-08-08T151800+03"
und UTC"2009-08-08T121800Z"
Sie können DateTime.Kind auch automatisch mit "K" erkennen und verwenden "yyyy-MM-ddTHHmmssK"
, aber dann müssen Sie die Zeichen ':' ersetzen.
Irgendwelche anderen Vorschläge?
Edit: Ein paar Anmerkungen bisher:
Das lokale Zeit- und Zeitzonenformat kann "yyyy-MM-ddTHHmmsszz"
nicht mehr sortiert werden, wenn mehrere Zeitzonen betroffen sind. In den meisten Fällen wäre es sinnvoll, die Zeitzoneninformationen zu löschen, wenn sie redundant sind, und UTC anderweitig zu verwenden.
Eine andere Sache ist, dass UTC immer mit 'Z', 'GMT' oder 'UTC' gekennzeichnet sein sollte, um Vermutungen und Fehler zu vermeiden.
Julianische Datteln und andere Stardaten sind cool, weil die Datumsarithmetik mit dem gregorianischen Kalender ein Kinderspiel ist.