web-dev-qa-db-fra.com

Format DateTime.ToString () pouvant être utilisé dans un nom de fichier ou une extension?

Je souhaite ajouter un horodatage aux noms de fichiers au fur et à mesure de la création des fichiers, mais la plupart des méthodes DateTime que j'ai essayées produisent quelque chose avec des espaces et des barres obliques. Par exemple:

Debug.WriteLine(DateTime.Now.ToString()); // <-- 9/19/2012 1:41:46 PM
Debug.WriteLine(DateTime.Now.ToShortTimeString()); // <-- 1:41 PM
Debug.WriteLine(DateTime.Now.ToShortDateString()); // <-- 9/19/2012
Debug.WriteLine(DateTime.Now.ToFileTime()); // <-- 129925501061462806

ToFileTime() fonctionne mais n'est pas lisible par l'homme. Comment formater la sortie en un horodatage lisible par l'homme avec une date et une heure utilisables dans un nom de fichier ou une extension? De préférence quelque chose comme 2011-19-9--13-45-30?

85
pdizz

Vous pouvez utiliser ceci:

DateTime.Now.ToString("yyyy-dd-M--HH-mm-ss");
154
Kristof Claes

Je voudrais utiliser le format ISO 8601 , sans séparateurs:

DateTime.Now.ToString("yyyyMMddTHHmmss")
89
Christoffer Lette

J'ai une situation similaire mais je veux un moyen cohérent pour pouvoir utiliser DateTime.Parse à partir du nom de fichier aussi, alors je suis allé avec

DateTime.Now.ToString("s").Replace(":", ".") // <-- 2016-10-25T16.50.35

Lorsque je veux analyser, je peux simplement inverser l'appel Remplacer. De cette façon, je n'ai pas à taper de contenu yymmdd ni à deviner quels formats sont autorisés par DateTime.Parse.

12
Gabe Haack

La liste ci-dessous des spécificateurs de format d'heure les plus couramment utilisés.,

dd - jour du mois, du 01 au 31.

[~ # ~] mm [~ # ~] - mois , de 01 à 12.

yyyy - année sous forme de nombre à quatre chiffres.

hh - heure , en utilisant une horloge 12 heures de 01 à 12.

mm - minute , de 00 à 59.

ss - seconde , de 00 à 59.

[~ # ~] hh [~ # ~] - heure , en utilisant une horloge 24 heures de 00 à 23.

tt - AM/PM désignateur.

En utilisant ce qui précède, vous pourrez créer un nom unique pour votre nom de fichier.

Ici, j'ai fourni un exemple

string fileName = "fileName_" + DateTime.Now.ToString("MM-dd-yyyy_hh-mm-ss-tt") + ".pdf";

[~ # ~] ou [~ # ~]

Si vous ne préférez pas utiliser de symboles, vous pouvez aussi essayer ceci.,

string fileName = "fileName_" + DateTime.Now.ToString("MMddyyyyhhmmsstt") + ".pdf";

J'espère que cela aide quelqu'un maintenant ou dans l'avenir. :)

6
RajeshKdev

Personnellement je l'aime de cette façon:

DateTime.Now.ToString("yyyy-MM-dd HH.mm.ss")

Parce qu'il fait la distinction entre la date et l'heure.

5
Charles Clayton

Vous pouvez essayer avec

var result = DateTime.Now.ToString("yyyy-MM-d--HH-mm-ss");
3
Aghilas Yakoub

Vous pouvez créer un chemin pour votre fichier en tant que ci-dessous:

string path = "fileName-"+DateTime.Now.ToString("yyyy-dd-M--HH-mm-ss") + ".txt";
2

Utilisation de interpolation chaîne et spécificateur de format :

var filename = $"{DateTime.Now:yyyy.dd.M HH-mm-ss}"

Ou si vous n'êtes pas en Amérique:

var filename = $"{DateTime.Now:yyyy.M.dd HH-mm-ss}"

Cette fonctionnalité est disponible dans les versions C # 6 et supérieures du langage.

This feature is available in C# 6 and later versions of the language.

1
ChickenFeet