"Standard" -Format für die Verwendung eines Zeitstempels als Teil eines Dateinamens [geschlossen]


85

Ich suchte nach einem Standardformat für die Verwendung eines Datums / einer Uhrzeit als Teil eines Dateinamens und konnte mir nichts einfallen lassen.

Meine Frage besteht aus zwei Teilen:

Verwendet Zeitstempel einzigartig erzwingen in Dateinamen eine schlechte Praxis?

Ich könnte die Zeit vom Erstellungsdatum abrufen und die Dateinamen (file0001.bak, file0002.bak usw.) serialisieren, aber nur mit dem Zeitstempel können Dateivorgänge wie z mv 2011-01* somewhere/. Gibt es einen Nachteil bei der Verwendung eines solchen Benennungssystems?

Das von mir verwendete Format ist YYYY-mm-dd_HH-MM-SS.

Gibt es ein besseres Format, das ich verwenden sollte?

Sollte ich mich bei diesem Format um die Dateisystemkompatibilität, str_to_date_parsing usw. kümmern?

Vielen Dank!

bearbeiten:

Ich könnte gewünscht haben , um den auslassen erzwingen Eindeutigkeit Bit , da es sich um eine Single - User - Erzeugungs Sicherung ist mit einem cronjob (es keine Parallelität Probleme sein sollte).


9
Im Allgemeinen verwende ich nur YYYYmmddHHMMSS, dann kann es numerisch oder lexikalisch sortiert / gefiltert werden.
Orbling

Ich benutze "yyyy mmdd hhmm". Meine Firma hat eine globale Reichweite, daher stempele ich mit GMT. Während ich dies schreibe, würde es "2011 0325 0245" lauten, da dies gerade die Zeit in London ist (und sie sind derzeit noch zur Standardzeit). Wenn ich die Ortszeit angeben möchte, die für mich Eastern Time ist, würde ich "yyyy mmdd hhmm ET" verwenden.
Mike Rosenblum

Ich benutze Sekunden seit der Epoche, damit ich mich nicht mit Zeitzonen, Schaltjahren und Tageslichteinsparungen befassen muss. Erleichtert auch die Datums- / Uhrzeitberechnung.
Dietbuddha


2
Ich schlage ein Format basierend auf ISO 8601 in einem Beitrag auf blog.xam.de/2016/07/… vor - würde unsere Welt erleichtern, wenn wir uns auf ein Format einigen könnten :-)
Dr. Max Völkel

Antworten:


62

Sie sollten das ISO 8601-Format (2013-04-01T13: 01: 02) berücksichtigen. Ja, es gibt Standards für diese Dinge. Die Doppelpunkte und Bindestriche können weggelassen werden.

Die %Y%m%dT%H%M%SFormatzeichenfolge, die ich normalerweise verwende, ergibt 20130401T130102. Je nach Anforderung lasse ich Werte von links weg. In einem Bash-Skript erhalte ich das Datum mit einer Zeile wie:

LOGDATE=$(date +%Y%m%dT%H%M%S)

32
Die Doppelpunkte müssen auf jeden Fall weggelassen werden, wenn Sie auf einem Windows-System arbeiten, da sie in einem Dateinamen unzulässig sind!
Carson63000

2
Für diejenigen, die strftime verwenden, ist das Format string"%Y-%m-%dT%H:%M:%S%z"
Alec Jacobson

6
Ich benutze YYYY-MM-DD-HHMMSS(ich könnte das SSin einigen Fällen weglassen ). Der Datumsteil ist gut lesbar, und der Zeitteil ist für die meisten Zwecke gut lesbar.
Keith Thompson

15
Standard oder nicht, "20130401T1301102" ist nicht sehr benutzerfreundlich. Meine Augen schmerzen, wenn ich Software-Protokolldateien mit solchen Zeitstempeln im Namen sehe.
Zero3,

1
2019.04.01-13.01.02.JPGoder ähnliche Namen (zB 190401-130102.JPG:) sind besser für die Augen. @ Zero3
S.Serpooshan

4

Ich suchte nach einem Standardformat für die Verwendung eines Datums / einer Uhrzeit als Teil eines Dateinamens und konnte mir nichts einfallen lassen.

Meine Frage besteht aus zwei Teilen:

Ist die Verwendung eines Zeitstempels zum Erzwingen eindeutiger Dateinamen eine schlechte Praxis?

Nein, alles in Ordnung.

Ich könnte die Zeit vom Erstellungsdatum abrufen und die Dateinamen serialisieren (file0001.bak, file0002.bak usw.)

Sie fortlaufend zu nummerieren ist mehr Arbeit. Stellen Sie sich den Zeitstempel als zunehmende, aber nicht fortlaufende Nummerierung vor.

Aber nur mit dem Zeitstempel können Dateioperationen wie mv 2011-01 * irgendwo / ausgeführt werden. Gibt es einen Nachteil bei der Verwendung eines solchen Benennungssystems?

Nein, es ist die ganze Zeit erledigt.

Das von mir verwendete Format ist JJJJ-mm-tt_HH-MM-SS.

Das ist gut, denn sie werden in chronologischer Reihenfolge sortiert. Ich würde den Unterstrich verlieren, nur weil es einfacher ist, einen Bindestrich einzugeben.

Gibt es ein besseres Format, das ich verwenden sollte?

Nicht wirklich.


2
Ich würde sagen "Verwenden Sie ein ISO-Standard-Zeitformat". Also, JJJJ-MM-TTTHH: MM: SS (oder JJJJMTTHHMMSS).
Vatine

3

Das hängt von Ihrer Anwendung ab. Manchmal kann ein Zeitstempel wie der von Ihnen beschriebene verwendet werden. Manchmal, wenn Namenskollisionen ein Problem darstellen, können Sie einen GUID- Generator verwenden.


2

Das von Ihnen verwendete Format ist in Ordnung. Wenn Sie jedoch Eindeutigkeit wünschen und die Zeit keine andere Bedeutung hat, liegt möglicherweise ein Parallelitätsproblem in Ihrer Anwendung vor, wenn die Anwendung von mehreren Benutzern zur gleichen Zeit verwendet wird und alle Dateien in derselben erstellt werden Mappe. Wenn Sie nur die Eindeutigkeit wünschen, können Sie eine GUID generieren und ungültige Zeichen wie geschweifte Klammern und Bindestriche entfernen und als Dateinamen verwenden.



-3

Das FBI hat ein "einzelnes" Benutzerproblem, das darin besteht, 100 Millionen Fingerabdrücke von kriminellen Festnahmen zu sichern, die sie von allen Polizisten überall erhalten ...

... sie beginnen mit dem Datum: JJJJMMTT

Ich weiß nicht, wie es weitergeht. Ich mache weiter mit hhmm und für mich ist das genau das Richtige .

Die Verwendung von GMT / Zulu klingt nach einer hervorragenden Idee für eine globale Lösung. Persönlich benutze ich ET, und das FBI "persönlich" verwendet auch ET, da sich dort der Hauptsitz befindet.


3
Dies fügt der viel allgemeineren Diskussion in den anderen Beiträgen nichts hinzu, die tatsächlich Aspekte wie rechtliche Merkmale und Sortierung und Eindeutigkeit berührt.
Martijn Pieters
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.