Format «standard» pour utiliser un horodatage dans un nom de fichier [fermé]

85

J'ai cherché un format standard pour utiliser une date / heure dans un nom de fichier et je ne pouvais rien trouver.

Ma question est en deux parties:

Utilise des horodatages faire respecter unique dans les noms de fichiers une mauvaise pratique?

Je pouvais obtenir l'heure à partir de la date de création et sérialiser les noms de fichiers (fichier0001.bak, fichier0002.bak, etc.), mais l'inclusion de l'horodatage permet d'effectuer des opérations telles que mv 2011-01* somewhere/. Y a-t-il un inconvénient à utiliser ce type de système de nommage?

Le format que j'utilise est YYYY-mm-dd_HH-MM-SS.

Y a-t-il un meilleur format que je devrais utiliser?

Avec ce format, devrais-je me préoccuper de la compatibilité du système de fichiers, des préoccupations de str_to_date_parsing, etc.?

Merci!

modifier:

J'aurais peut-être voulu laisser de côté le bit d'unicité d' application puisqu'il s'agit d'un utilisateur unique qui génère une sauvegarde à l'aide d'un travail cron (il ne devrait y avoir aucun problème de simultanéité).

Kriegar
la source
9
Généralement, je viens d'utiliser YYYYmmmmddHHMMSS, alors il peut être trié / filtré numériquement ou lexicalement.
Orbling
J'utilise "aaaa mmjj hhmm". Mon entreprise a une portée mondiale, alors j’estampille de temps en utilisant GMT. Donc, au moment où j'écris ceci, ce serait "2011 0325 0245", parce que c'est l'heure à Londres en ce moment (et ils sont toujours à l'heure standard). Si je veux spécifier l'heure locale, qui est l'heure de l'Est pour moi, j'utiliserais alors "aaaa mmdd hhmm ET".
Mike Rosenblum
J'utilise les secondes depuis l'époque, donc je n'ai pas à gérer les fuseaux horaires, les années bissextiles et les économies de jour. Facilite également les calculs de date / heure.
dietbuddha
2
Je propose un format basé sur ISO 8601 dans un article de blog.xam.de/2016/07/… - faciliterait notre monde si nous pouvions nous mettre d'accord sur un format :-)
Dr. Max Völkel le

Réponses:

62

Vous devriez envisager le format ISO 8601 (2013-04-01T13: 01: 02). Oui, il existe des normes pour ces choses. Les deux points et les traits d'union peuvent être omis.

La chaîne de format que j'utilise habituellement %Y%m%dT%H%M%Sdonne 20130401T130102. En fonction des besoins, j'omets les valeurs à gauche. Dans un script bash, j'obtiens la date avec une ligne comme:

LOGDATE=$(date +%Y%m%dT%H%M%S)
BillThor
la source
32
Les deux points devront certainement être omis si vous êtes sur un système Windows, car ils sont illégaux dans un nom de fichier!
Carson63000
2
Pour ceux qui utilisent strftime, le format de la chaîne est le suivant:"%Y-%m-%dT%H:%M:%S%z"
Alec Jacobson
6
J'utilise YYYY-MM-DD-HHMMSS(je peux l'omettre SSdans certains cas). La partie date est assez lisible et la partie heure est assez lisible pour la plupart des buts.
Keith Thompson
15
Standard ou non, "20130401T1301102" n'est pas très convivial. J'ai mal aux yeux lorsque je vois des fichiers journaux de logiciels contenant ces noms d'horodatage.
Zero3
1
2019.04.01-13.01.02.JPGou des noms similaires (par exemple 190401-130102.JPG:) sont mieux pour les yeux. @ Zero3
S.Serpooshan
4

J'ai cherché un format standard pour utiliser une date / heure dans un nom de fichier et je ne pouvais rien trouver.

Ma question est en deux parties:

L'utilisation d'un horodatage pour imposer des noms de fichier uniques est-elle une mauvaise pratique?

Non ça va.

Je pouvais obtenir l'heure à partir de la date de création et sérialiser les noms de fichiers (fichier0001.bak, fichier0002.bak, etc.)

Les numéroter séquentiellement est plus de travail. Considérez l'horodatage comme une numérotation croissante mais non séquentielle.

mais le simple ajout de l'horodatage permet d'effectuer des opérations sur des fichiers tels que mv 2011-01 * quelque part /. Y a-t-il un inconvénient à utiliser ce type de système de nommage?

Non, c'est fait tout le temps.

Le format que j'utilise est AAAA-mm-jj_HH-MM-SS.

C'est bien, car ils vont trier dans l'ordre chronologique. Je voudrais perdre le trait de soulignement, simplement parce qu'il est plus facile de taper un trait d'union.

Y a-t-il un meilleur format que je devrais utiliser?

Pas vraiment.

Kevin Cline
la source
2
Je dirais "Utiliser un format d'heure standard ISO". Donc, AAAA-mm-jjTHH: MM: SS (ou aaaammjjTHHMMSS).
Vatine
3

Cela dépend de votre application. Parfois, un horodatage tel que celui que vous avez décrit peut être utilisé. Parfois, lorsque la collision de noms est une préoccupation, vous pouvez utiliser un générateur GUID .

grokus
la source
2

Le format que vous utilisez convient, mais si vous voulez un caractère unique et que l'heure n'a pas d'autre signification, vous pouvez avoir un problème de simultanéité dans votre application si l'application est utilisée par plusieurs utilisateurs simultanément, et que tous les fichiers sont créés de la même manière. dossier. Si vous souhaitez simplement l'unicité, vous pouvez envisager de générer un GUID et de supprimer tout caractère non valide, tel que des accolades et des tirets, et de l'utiliser comme nom de fichier.

M.Sameer
la source
-3

Le FBI a un problème "d'utilisateur unique" consistant à sauvegarder 100 millions d'empreintes digitales d'arrestations criminelles qu'ils reçoivent de la part de la police partout dans le monde ...

... ils commencent par la date: aaaammjj

Je ne sais pas comment ils continuent. Je continue avec hhmm et pour moi ça le fait.

Utiliser GMT / Zulu semble être une excellente idée pour une solution globale. Personnellement, j'utilise ET, et le FBI l'utilise "personnellement" également car c'est là que se trouve son siège.

dave
la source
3
Cela n'ajoute rien à la discussion beaucoup plus générale dans les autres messages, qui touchent en réalité des aspects tels que les caractères légaux, le tri et l'unicité.
Martijn Pieters