255 votes

Obtenez DateTime.Now avec une précision en millisecondes

comment puis-je construire exactement l'horodatage de l'heure réelle avec une précision millisecondes? J'ai besoin de quelque chose comme 16.4.2013 9: 48: 00: 123. Est-ce possible? J'ai une application où j'échantillonne les valeurs 10 fois par seconde et que je dois les afficher dans un graphique. Merci pour vos réponses.

331voto

Jon Skeet Points 692016

comment puis-je exactement construire horodatage du temps réel avec millisecondes de précision?

Je soupçonne que vous entendez à la milliseconde précision. DateTime a beaucoup de précision, mais il est assez grossier, en termes de précision. En règle générale, vous ne pouvez pas. Habituellement, l'horloge du système (qui est l'endroit où DateTime.Now obtient ses données à partir de) a une résolution de l'ordre de 10-15ms. Voir Eric Lippert du blog au sujet de la précision et de l'exactitude pour plus de détails.

Si vous avez besoin de plus précis que le calendrier de cela, vous pouvez l'examiner à l'aide d'un client NTP.

Cependant, il n'est pas évident que vous avez vraiment besoin d'une précision à la milliseconde ici. Si vous n'avez pas de soins sur l' exact moment - la, vous voulez juste pour montrer les échantillons dans le bon ordre, avec "assez bonne" précision, le système de l'horloge doit être fine. Je vous conseille d'utiliser DateTime.UtcNow plutôt que d' DateTime.Now si, pour éviter les problèmes de fuseau horaire autour de l'heure d'été transitions etc.

Si votre question est en fait tout autour de la conversion d'un DateTime d'une chaîne de caractères avec précision à la milliseconde, je vous suggère de l'aide:

string timestamp = DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss.fff",
                                            CultureInfo.InvariantCulture);

(Noter que, contrairement à votre exemple, c'est sortable et moins susceptibles de causer de la confusion autour de savoir si c'est censé être "mois/jour/année" ou "jour/mois/année".)

128voto

Pyromancer Points 735

Est-ce que ça va marcher?

 DateTime.Now.ToString("hh.mm.ss.ffffff");
 

si vous n'avez pas besoin qu'elle soit affichée et que vous ayez juste besoin de connaître le décalage horaire, eh bien, ne le convertissez pas en chaîne, laissez-le simplement ainsi, DateTime.Now();

et utilisez TimeSpan pour connaître la différence entre les intervalles de temps,

Exemple

   DateTime start;
  TimeSpan time;

start = DateTime.Now;

//do something here

time = DateTime.Now - start;
label1.Text = String.Format("{0}.{1}", time.Seconds, time.Milliseconds.ToString().PadLeft(3, '0'));
 

16voto

Renae Points 156

La réponse du pyromancien me semble plutôt bonne mais peut-être ce que vous vouliez est

 DateTime.Now.Millisecond
 

Mais si vous comparez des dates, TimeSpan est la voie à suivre.

-3voto

amol jadhao Points 104

DateTime.Now.ToString ("ddMMyyyyhhmmssffff")

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X