c# yyyy Comment fonctionne exactement DateTime.Now.Ticks?




datetime.parse c# (4)

La résolution de DateTime.Now dépend de la minuterie de votre système (environ 10 ms sur un système d'exploitation Windows actuel) ... elle donne donc la même valeur finale (elle ne compte pas plus fin que cela).

Dans mon application, je génère des fichiers à des occasions aléatoires. Pour assurer un nom unique, j'ai essayé d'utiliser les nanosecondes 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 utiliser cela comme un nom de fichier, ce n'est pas le problème, mais je m'interroge à ce sujet.

634292263478068039
634292263512888039
634292263541368039
634292263603448039
634292263680078039

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);
}

Ce n’est pas vraiment une réponse à votre question telle que posée, mais j’ai pensé vous renseigner sur 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 .

Il est également courant d'utiliser un GUID pour nommer des fichiers aléatoires.






datetime