C'est un peu subjective de la question, et pas très important dans le grand schéma des choses, mais quelque chose qui pourtant m'agace régulièrement. Il ne semble pas évident en soi moyen de mettre un timestamp dans un nom de fichier.
Objectif de la question est que les horodateurs dans les noms de fichier doivent être sortable. Mais .NET sortable formats de date comme "s" ("yyyy-MM-ddTHH:mm:ss"
) et "u" ("yyyy-MM-dd HH:mm:ssZ"
) ne sont pas valides dans les noms de fichier en raison de "l':" des personnages.
Autre chose, c'est que vous devriez facilement voir si universelle ou à l'heure locale est utilisée. Pratiquement, les utilisateurs semblent préférer l'heure locale à l'heure universelle.
J'ai surtout fini à l'aide de la norme ISO 8601 avec base format de l'heure:
- Heure locale chaîne de format
"yyyy-MM-ddTHHmmsszz"
- UTC chaîne de format
"yyyy-MM-ddTHHmmssZ"
Dans ces formats, mon heure locale actuelle serait "2009-08-08T151800+03"
et UTC "2009-08-08T121800Z"
Vous pouvez également détecter automatiquement le type DateTime.Genre avec un"K" et l'utilisation "yyyy-MM-ddTHHmmssK"
, mais vous aurez à remplacer les ':' personnages.
Toutes les autres suggestions?
Edit: quelques notes à ce jour:
heure locale + fuseau horaire format "yyyy-MM-ddTHHmmsszz"
n'est plus sortable si plusieurs fuseaux horaires sont impliqués. Dans la plupart des cas, il serait judicieux de déposer le fuseau horaire de l'info si c'est redondant, et utiliser UTC autrement.
Une autre chose est que UTC devrait toujours être marqués avec 'Z', 'EME' ou 'UTC' pour éviter les tâtonnements et les erreurs.
Les dates juliennes et d'autres stardates sont cool parce que arithmétiques sur les dates avec le calendrier grégorien est braindead.