J'ai rencontré ce problème à plusieurs reprises dans lequel je voudrais avoir plusieurs versions du même fichier dans le même répertoire. La façon dont je l'ai fait avec C # consiste à ajouter un horodatage au nom du fichier avec quelque chose comme ceci DateTime.Now.ToString().Replace('/', '-').Replace(':', '.')
. Y a-t-il une meilleure manière de faire cela?
Vous pouvez utiliser méthode DateTime.ToString (String)
DateTime.Now.ToString("yyyyMMddHHmmssfff")
string.Format("{0:yyyy-MM-dd_hh-mm-ss-fff}",DateTime.Now)
;
$"{DateTime.Now:yyyy-MM-dd_hh-mm-ss-fff}"
Les spécificateurs de format personnalisés suivants sont y (année), M (mois), j (jour), h (heure 12), H (heure 24), m (minute), s (seconde), f (fraction seconde), F (la deuxième fraction, les zéros à la fin sont ajustés), t (PM ou AM) et z (fuseau horaire).
avec méthode d'extension
Usage:
string result = "myfile.txt".AppendTimeStamp();
//myfile20130604234625642.txt
Méthode d'extension
public static class MyExtensions
{
public static string AppendTimeStamp(this string fileName)
{
return string.Concat(
Path.GetFileNameWithoutExtension(fileName),
DateTime.Now.ToString("yyyyMMddHHmmssfff"),
Path.GetExtension(fileName)
);
}
}
Je préfère utiliser:
string result = "myFile_" + DateTime.Now.ToFileTime() + ".txt";
Que fait ToFileTime ()?
Convertit la valeur de l'objet DateTime actuel en heure de fichier Windows.
public long ToFileTime()
Une heure de fichier Windows est une valeur de 64 bits qui représente le nombre d'intervalles de 100 nanosecondes qui se sont écoulés depuis 12 h 00 le 1er janvier 1601 après J.-C. (C.E.), le temps universel coordonné (UTC). Windows utilise un temps de fichier pour enregistrer quand une application crée, accède ou écrit dans un fichier.
Peut-être que l’ajout de DateTime.Now.Ticks
à la place sera un peu plus rapide, car vous ne créerez pas de 3 chaînes et la valeur des ticks sera toujours unique également.
vous pouvez utiliser:
Stopwatch.GetTimestamp();
Vous pouvez utiliser ci-dessous à la place:
DateTime.Now.Ticks