web-dev-qa-db-fra.com

Format "standard" pour l'utilisation d'un horodatage dans le cadre d'un nom de fichier

J'ai cherché un format standard pour utiliser une date/heure dans le cadre d'un nom de fichier et je n'ai rien trouvé.

Ma question est en deux parties:

tilise des horodatages pour appliquer unique dans les noms de fichiers une mauvaise pratique?

Je pourrais obtenir l'heure à partir de la date de création et sérialiser les noms de fichiers (file0001.bak, file0002.bak, etc.) mais le simple fait d'inclure l'horodatage permet d'effectuer des opérations sur les fichiers 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, dois-je m'inquiéter de la compatibilité du système de fichiers, des problèmes de str_to_date_parsing, etc.?

Merci!

éditer:

J'aurais peut-être voulu laisser de côté le bit d'unicité enforce car il s'agit d'un seul utilisateur générant une sauvegarde à l'aide d'un cronjob (il ne devrait pas y avoir de problème de concurrence).

93
kriegar

Vous devriez considérer le format ISO 8601 (2013-04-01T13: 01: 02). Oui, il existe des normes pour ces choses. Les deux points et les tirets peuvent être omis.

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

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

J'ai cherché un format standard pour utiliser une date/heure dans le cadre d'un nom de fichier et je n'ai rien trouvé.

Ma question est en deux parties:

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

Non ça va.

Je pourrais obtenir l'heure à partir de la date de création et sérialiser les noms de fichiers (file0001.bak, file0002.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 simplement inclure l'horodatage permet d'effectuer des opérations sur les 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 seront triés par ordre chronologique. Je perdrais le trait de soulignement, simplement parce qu'il est plus facile de taper un trait d'union.

Existe-t-il un meilleur format que je devrais utiliser?

Pas vraiment.

5
kevin cline

Cela dépend de votre application. Parfois, un horodatage comme celui que vous décrivez peut être utilisé. Parfois, lorsque la collision de noms est un problème, vous pouvez utiliser un générateur GUID .

3
grokus

L'utilisation du format ISO 8601 vous permet également de trier les fichiers par date (en supposant qu'ils ont 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://en.wikipedia.org/wiki/ISO_8601

2
Tangurena

Le format que vous utilisez est correct, mais si vous voulez l'unicité et 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 en même temps et que tous les fichiers sont créés de la même manière dossier. Si vous voulez juste l'unicité, vous pouvez envisager de générer GUID et de supprimer tous les caractères non valides comme les accolades et les tirets et de l'utiliser comme nom de fichier.

2
M.Sameer