Esta es una pregunta algo subjetiva, y no muy importante en el gran esquema de las cosas, pero algo que me molesta regularmente. Parece que no hay una forma evidente de poner una marca de tiempo en un nombre de archivo .
El problema objetivo es que las marcas de tiempo en los nombres de los archivos deben poder ordenarse . Pero los formatos de fecha ordenables .NET como "s" ( "yyyy-MM-ddTHH:mm:ss"
) y "u" ( "yyyy-MM-dd HH:mm:ssZ"
) no son válidos en los nombres de archivo debido a los caracteres ':'.
Otra cosa es que debería ver fácilmente si se usa la hora local o universal . Prácticamente, los usuarios parecen preferir la hora local a la hora universal.
La mayoría de las veces terminé usando ISO 8601 con formato de hora básico:
- Cadena de formato de hora local
"yyyy-MM-ddTHHmmsszz"
- Cadena de formato UTC
"yyyy-MM-ddTHHmmssZ"
En estos formatos, mi hora local actual sería "2009-08-08T151800+03"
y UTC"2009-08-08T121800Z"
También puede detectar automáticamente el tipo DateTime.Kind con "K" y usarlo "yyyy-MM-ddTHHmmssK"
, pero luego tendrá que reemplazar los caracteres ':'.
¿Cualquier otra sugerencia?
Editar: algunas notas hasta ahora:
El formato de hora local + zona horaria "yyyy-MM-ddTHHmmsszz"
ya no se puede ordenar si hay varias zonas horarias involucradas. En la mayoría de los casos, tendría sentido eliminar la información de la zona horaria si es redundante y usar UTC en caso contrario.
Otra cosa es que UTC siempre debe estar marcado con 'Z', 'GMT' o 'UTC' para evitar conjeturas y errores.
Las fechas julianas y otras fechas estelares son geniales porque la aritmética de fechas con el calendario gregoriano está muerta de cerebro.