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.
Antworten:
Ich benutze das:
--UTC
nach der Zeit " " anhängen .quelle
_
) anstelle von Doppelstrichen, um die Teile zu trennen. (zBMy-File_2009-12-31_23-59-59.txt
)name_-_2019-11-04--15-04-36.642621403_-_2019-11-04--15-04-36.642622803.ext
ist für Linux-Shell in Ordnung. Keine Zeitzone, aber mit einer Genauigkeit von Nanosekunden.Ich würde
YYYY-MM-DD HHmmss
für Dateinamen verwenden, es sei denn, es besteht ein besonderer Bedarf an Zeitzonen oder eine mögliche Notwendigkeit, diese in ISO-Daten zu analysieren. In diesen Fällen wäre ein ISO-Datum wahrscheinlich vorzuziehen.Bearbeiten: Zeitzonen sollten eigentlich nie benötigt werden; Alles in UTC zu speichern und die Leute wissen zu lassen, dass alles UTC ist, ist effizienter als die Zeitzone von allem anzugeben.
quelle
T
, aber das ist weniger natürlich, wenn Sie es lesen.Folgendes benutze ich:
Es braucht ein Datum und eine Beschreibung. Verwenden wir "Ich mag HUNDE". Ergebnisse in:
ILikeDogs_1999-09-23_18-42
quelle
Muss der Zeitstempel für Menschen lesbar sein? Wenn nicht, können Sie einfach DateTime.Ticks.ToString () verwenden . Sehr genau, sortierbar und ohne Sonderzeichen.
quelle
Normalerweise benutze ich yyyymmdd. Wenn weitere Präzision erforderlich ist, ändert sich diese in yyyymmddhhmmss
quelle
Ich verwende Unix-Zeitstempel, z. Wie viele Sekunden vergingen von der Epoche? Alle Zeiten in UTC. Aber wenn Sie möchten, können Sie auch Zeitzonendaten voranstellen.
quelle