2009-04-08 4 views

Répondre

2

que diriez-vous simplement:

DateTime original = DateTime.Today; 
string s = original.ToString("yyyyMMdd", CultureInfo.InvariantCulture); 
DateTime dt = DateTime.ParseExact(s, "yyyyMMdd", CultureInfo.InvariantCulture); 

(évidemment combiner avec le reste du nom de fichier ... ajouter plus de précision si nécessaire - heures, minutes, etc.)

+0

Ou utiliser des tiques pour plus de précision –

+0

Je ne savais pas que vous pouviez faire cela. Merci – jimconstable

2

EDIT: Malheureusement, le format original utilise des deux-points, qui ne peuvent pas être utilisés dans les noms de fichiers Windows. C'est vraiment dommage, car c'est par ailleurs idéal. Dans ce cas, je voudrais:

yyyy-MM-dd`T`HH-mm-ss 

(en millisecondes si vous en avez besoin). Je ne sais pas si cultures utiliser quelque chose d'inhabituel pour l'un de ces domaines. Ce serait assez surprenant, mais vous devriez probablement utiliser CultureInfo.InvariantCulture juste pour être sûr. Cependant, j'aime bien avoir les tirets - cela facilite l'analyse lorsque l'on regarde une liste de fichiers vers le bas.

EDIT: réponse originale

Je vous suggère d'utiliser le modèle de format date/heure triables donnée par la chaîne de format standard 's', par exemple:

Console.WriteLine(DateTime.UtcNow.ToString("s")); 

qui imprime quelque chose comme:

2009-04-08T06:45:43 

Ceci est facile à analyser pour les humains, facile à analyser pour les ordinateurs, indépendant de la culture, et trie convenablement y.

+0

Impossible d'utiliser le caractère: dans un nom de fichier si ... – sipwiz

+0

c'était mon problème – jimconstable

+0

Ah, vrai. Modification ... –

Questions connexes