Formato "estándar" para usar una marca de tiempo como parte de un nombre de archivo [cerrado]

85

Busqué un formato estándar para usar una fecha / hora como parte del nombre de un archivo y no pude encontrar nada.

Mi pregunta es de dos partes:

Está usando marcas de tiempo para hacer cumplir único en los nombres de archivo una mala práctica?

Podría obtener el tiempo desde la fecha de creación y serializar los nombres de archivo (file0001.bak, file0002.bak, etc.) pero solo incluir la marca de tiempo permite realizar operaciones de archivo como mv 2011-01* somewhere/. ¿Hay alguna desventaja en usar este tipo de sistema de nombres?

El formato que estoy usando es YYYY-mm-dd_HH-MM-SS.

¿Hay un mejor formato que debería estar usando?

Con este formato, ¿debería preocuparme la compatibilidad del sistema de archivos, las preocupaciones de str_to_date_parsing, etc.?

¡Gracias!

editar:

Podría haber querido omitir el bit de unicidad de cumplimiento, ya que es un solo usuario que genera una copia de seguridad utilizando un cronjob (no debería haber ningún problema de concurrencia).

kriegar
fuente
99
En general, solo uso YYYYmmddHHMMSS, luego se puede ordenar / filtrar numérica o léxicamente.
Orbling
Yo uso "aaaa mmdd hhmm". Mi empresa tiene alcance global, por lo que marca la hora con GMT. Mientras escribo esto, sería "2011 0325 0245", porque ese es el momento en Londres en este momento (y todavía están en el horario estándar en este momento). Si quiero especificar en la hora local, que es la hora del este para mí, entonces usaría "aaaa mmdd hhmm ET".
Mike Rosenblum
Utilizo segundos desde la época, así que no tengo que lidiar con zonas horarias, año bisiesto y ahorro de luz diurna. También facilita las matemáticas de fecha / hora.
dietbuddha
1
Ver también: serverfault.com/questions/292014/…
Zero3
2
Propongo un formato basado en ISO 8601 en una publicación en blog.xam.de/2016/07/… - haría nuestro mundo más fácil, si pudiéramos acordar un formato :-)
Dr. Max Völkel

Respuestas:

62

Debe considerar el formato ISO 8601 (2013-04-01T13: 01: 02). Sí, hay estándares para estas cosas. Se pueden omitir los dos puntos y guiones.

La cadena de formato que uso generalmente %Y%m%dT%H%M%Sproduce 20130401T130102. Dependiendo de los requisitos, omito los valores de la izquierda. En un script bash, obtengo la fecha con una línea como:

LOGDATE=$(date +%Y%m%dT%H%M%S)
BillThor
fuente
32
Sin duda, los dos puntos deberán omitirse si está en un sistema Windows, ya que son ilegales en un nombre de archivo.
Carson63000
2
Para aquellos que usan strftime, la cadena de formato es"%Y-%m-%dT%H:%M:%S%z"
Alec Jacobson
66
Yo uso YYYY-MM-DD-HHMMSS(podría omitir el SSen algunos casos). La parte de la fecha es bastante legible, y la parte del tiempo es lo suficientemente legible para la mayoría de los propósitos.
Keith Thompson
15
Estándar o no, "20130401T1301102" no es muy fácil de usar. Me duelen los ojos cuando veo archivos de registro de software con este tipo de marcas de tiempo en sus nombres.
Zero3
1
2019.04.01-13.01.02.JPGo nombres similares (por ejemplo 190401-130102.JPG:) son mejores para los ojos. @ Zero3
S.Serpooshan
4

Busqué un formato estándar para usar una fecha / hora como parte del nombre de un archivo y no pude encontrar nada.

Mi pregunta es de dos partes:

¿Usar una marca de tiempo para imponer nombres de archivo únicos es una mala práctica?

No, esta bien.

Podría obtener el tiempo desde la fecha de creación y serializar los nombres de archivo (file0001.bak, file0002.bak, etc.)

Numerarlos secuencialmente es más trabajo. Piense en la marca de tiempo como una numeración creciente pero no secuencial.

pero solo incluir la marca de tiempo permite realizar operaciones de archivo como mv 2011-01 * en algún lugar /. ¿Hay alguna desventaja en usar este tipo de sistema de nombres?

No, se hace todo el tiempo.

El formato que estoy usando es AAAA-mm-dd_HH-MM-SS.

Eso es bueno, porque se ordenarán en orden cronológico. Perdería el guión bajo, solo porque es más fácil escribir un guión.

¿Hay un mejor formato que debería estar usando?

Realmente no.

Kevin Cline
fuente
2
Yo diría "Usar un formato de hora estándar ISO". Entonces, AAAA-mm-ddTHH: MM: SS (o aaaammddTHHMMSS).
Vatine
3

Depende de su aplicación. A veces se puede usar una marca de tiempo como la que describió. A veces, cuando la colisión de nombres es una preocupación, puede usar un generador GUID .

grokus
fuente
2

El formato que está utilizando está bien, pero si desea unicidad y el tiempo no tiene otro significado, puede tener un problema de concurrencia en su aplicación si la aplicación es utilizada por múltiples usuarios al mismo tiempo y todos hacen que los archivos se creen de la misma manera. carpeta. Si solo desea unicidad, puede considerar la generación de GUID y eliminar cualquier carácter no válido, como llaves y guiones, y usarlo como nombre de archivo.

M.Sameer
fuente
-3

El FBI tiene un problema de "usuario único" de respaldar 100 millones de huellas dactilares de arrestos criminales que reciben de toda la policía en todas partes ...

... comienzan con la fecha: aaaammdd

No sé cómo continúan. Sigo con hhmm y para mí eso lo hace.

Usar GMT / Zulu parece una excelente idea para una solución global. Personalmente uso ET, y el FBI "personalmente" también usa ET, ya que allí es donde tienen su sede.

Dave
fuente
3
Esto no agrega nada a la discusión mucho más general en las otras publicaciones, que en realidad se refieren a aspectos como los caracteres legales y la clasificación y singularidad.
Martijn Pieters