C'est une question un peu subjective, et pas très importante dans le grand schéma des choses, mais quelque chose qui pourtant m'ennuie régulièrement. Il ne semble pas y avoir de moyen évident de mettre un horodatage dans un nom de fichier .
Le problème objectif est que les horodatages dans les noms de fichiers doivent être triables . Mais les formats de date triables .NET tels que "s" ( "yyyy-MM-ddTHH:mm:ss"
) et "u" ( "yyyy-MM-dd HH:mm:ssZ"
) ne sont pas valides dans les noms de fichiers à cause des caractères ":".
Une autre chose est que vous devriez facilement voir si l'heure universelle ou locale est utilisée. En pratique, les utilisateurs semblent préférer l'heure locale à l'heure universelle.
J'ai surtout fini par utiliser ISO 8601 avec le format d'heure de base:
- Chaîne de format d'heure locale
"yyyy-MM-ddTHHmmsszz"
- Chaîne de format UTC
"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 DateTime.Kind avec "K" et l'utiliser "yyyy-MM-ddTHHmmssK"
, mais vous devrez ensuite remplacer les caractères ":".
D'autres suggestions?
Edit: Quelques notes jusqu'à présent:
Le format heure locale + fuseau horaire "yyyy-MM-ddTHHmmsszz"
ne peut plus être trié si plusieurs fuseaux horaires sont impliqués. Dans la plupart des cas, il serait judicieux de supprimer les informations de fuseau horaire si elles sont redondantes et d'utiliser UTC dans le cas contraire.
Une autre chose est que UTC doit toujours être marqué avec «Z», «GMT» ou «UTC» pour éviter les conjectures et les erreurs.
Les dates juliennes et autres stardates sont cool car l'arithmétique des dates avec le calendrier grégorien est à lire.