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é).
la source
Réponses:
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%S
donne 20130401T130102. En fonction des besoins, j'omets les valeurs à gauche. Dans un script bash, j'obtiens la date avec une ligne comme:la source
"%Y-%m-%dT%H:%M:%S%z"
YYYY-MM-DD-HHMMSS
(je peux l'omettreSS
dans certains cas). La partie date est assez lisible et la partie heure est assez lisible pour la plupart des buts.2019.04.01-13.01.02.JPG
ou des noms similaires (par exemple190401-130102.JPG
:) sont mieux pour les yeux. @ Zero3Non ça va.
Les numéroter séquentiellement est plus de travail. Considérez l'horodatage comme une numérotation croissante mais non séquentielle.
Non, c'est fait tout le temps.
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.
Pas vraiment.
la source
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 .
la source
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.
la source
L'utilisation du format ISO 8601 vous permet également de trier les fichiers par date (en supposant qu'ils aient tous le même préfixe).
http://www.iso.org/iso/support/faqs/faqs_widely_used_standards/widely_used_standards_other/date_and_time_format.htm
http://fr.wikipedia.org/wiki/ISO_8601
la source
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.
la source