Dans mon application, je génère des fichiers au hasard. Pour assurer une dénomination unique, j'ai essayé d'utiliser les nano secondes depuis le 1.1.1970:
long time = DateTime.Now.Ticks;
String fileName = Convert.ToString(time);
Console.WriteLine(fileName);
Maintenant, j'ai observé quelque chose de bizarre. Pourquoi la sortie est-elle comme ça? Je veux dire pourquoi les 4 derniers chiffres sont-ils toujours les mêmes? Je peux l'utiliser comme nom de fichier, ce n'est pas le problème, mais je me pose des questions.
634292263478068039
634292263512888039
634292263541368039
634292263603448039
634292263680078039
La résolution de DateTime.Now
dépend de la minuterie de votre système (~ 10 ms sur un système d'exploitation Windows actuel) ... donc cela donne la même valeur de fin là-bas (cela ne compte pas plus fini que cela).
Pas vraiment une réponse à votre question telle que posée, mais j'ai pensé que je pourrais m'intéresser à votre objectif général.
Il existe déjà une méthode pour générer des noms de fichiers aléatoires dans .NET.
Voir System.Path.GetTempFileName et GetRandomFileName .
Alternativement, il est courant d'utiliser un GUID pour nommer les fichiers aléatoires.
Vous pouvez obtenir les millisecondes depuis le 1/1/1970 en utilisant un tel code:
private static DateTime JanFirst1970 = new DateTime(1970, 1, 1);
public static long getTime()
{
return (long)((DateTime.Now.ToUniversalTime() - JanFirst1970).TotalMilliseconds + 0.5);
}
J'avais un problème similaire.
Je voudrais également regarder cette réponse: Existe-t-il un objet DateTime haute résolution (microseconde, nanoseconde) disponible pour le CLR? .
À mi-chemin environ ne réponse par "Robert P" avec quelques fonctions d'extension que j'ai trouvées utiles.
pour convertir le datetime actuel en nom de fichier pour enregistrer les fichiers que vous pouvez utiliser
DateTime.Now.ToFileTime();
cela devrait résoudre votre objectif