109 votes

Quel est votre format de date et heure préféré dans un nom de fichier?

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.

73voto

RichieHindle Points 98544

J'utilise ceci:

 My-File--2009-12-31--23-59-59.txt
 
  • Sans espaces
  • Double tiret pour séparer les pièces, rendant chaque pièce facile à voir
  • Un seul caractère de ponctuation (tiret) facilitant la frappe
  • Pas de fuseau horaire car pour moi, je travaille toujours dans mon fuseau horaire local; si j'en avais besoin, j'utiliserais UTC et ajouterais " --UTC " après l'heure.

17voto

You Points 8861

J'utiliserais YYYY-MM-DD HHmmss pour les noms de fichiers, sauf s'il existe un besoin particulier de fuseaux horaires ou un besoin éventuel de les analyser en dates ISO; dans ces cas, une date ISO serait probablement préférable.

Edit: Les fuseaux horaires ne devraient jamais être nécessaires; Sauver tout en UTC et faire savoir aux gens que tout est UTC est plus efficace que de spécifier le fuseau horaire de tout.

11voto

Nathaniel Points 105

Voici ce que j'utilise:

     private static string CreateMeaningfulFileName(string friendlyName, DateTime date)
    {
        StringBuilder sb = new StringBuilder();
        foreach (string s in friendlyName.Split(new char[] { ' ' }))//remove spaces
        {
            sb.Append(CultureInfo.CurrentCulture.TextInfo.ToTitleCase(s.ToLower()));//capitalize each segment
        }
        sb.Append("_" + date.ToString("yyyy-MM-dd_HH-mm"));//add date
        return sb.ToString();
    }
 

Il faut une date et une description. Utilisons "J'aime les chiens". Résulte en:

ILikeDogs_1999-09-23_18-42

3voto

Dan Diplo Points 16133

Est-il nécessaire que l'horodatage soit lisible par l'homme? Sinon, vous pouvez simplement utiliser DateTime.Ticks.ToString () . Très précis, triable et pas de caractères spéciaux.

1voto

jinzo Points 41

J'utilise des timestamps Unix, par exemple. combien de secondes ont passé de l'époque. Toutes les heures en UTC. Mais supposez que vous puissiez préfixer w / timezone data si vous le souhaitez.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X