Questa è una domanda in qualche modo soggettiva, e non molto importante nel grande schema delle cose, ma qualcosa che ancora mi infastidisce regolarmente. Non sembra esserci un modo evidente per inserire un timestamp in un nome di file .
Il problema oggettivo è che i timestamp nei nomi dei file dovrebbero essere ordinabili . Ma i formati di data ordinabili .NET come "s" ( "yyyy-MM-ddTHH:mm:ss"
) e "u" ( "yyyy-MM-dd HH:mm:ssZ"
) non sono validi nei nomi di file a causa dei caratteri ":".
Un'altra cosa è che dovresti vedere facilmente se viene utilizzata l' ora universale o locale . In pratica, gli utenti sembrano preferire l'ora locale all'ora universale.
Per lo più ho finito per utilizzare ISO 8601 con il formato dell'ora di base:
- Stringa del formato dell'ora locale
"yyyy-MM-ddTHHmmsszz"
- Stringa di formato UTC
"yyyy-MM-ddTHHmmssZ"
In questi formati la mia ora locale attuale sarebbe "2009-08-08T151800+03"
e UTC"2009-08-08T121800Z"
Puoi anche rilevare automaticamente DateTime.Kind con "K" e usarlo "yyyy-MM-ddTHHmmssK"
, ma poi dovrai sostituire i caratteri ":".
Qualche altro suggerimento?
Modifica: alcune note finora:
Il formato ora locale + fuso orario "yyyy-MM-ddTHHmmsszz"
non è più ordinabile se sono coinvolti più fusi orari. Nella maggior parte dei casi avrebbe senso eliminare le informazioni sul fuso orario se è ridondante e utilizzare UTC in caso contrario.
Un'altra cosa è che l'UTC dovrebbe sempre essere contrassegnato con "Z", "GMT" o "UTC" per evitare congetture ed errori.
Le date giuliane e altre date stellari sono interessanti perché l'aritmetica delle date con il calendario gregoriano è testa di leone.