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.
Réponses
Trop de publicités?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".)
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'));