2017-10-18 3 views
-5

Je suis en train de programmer un simulateur avec des capteurs qui retournent une valeur à très grande vitesse. En raison de l'abondance de l'exploitation forestière, il est très important pour moi d'avoir une programmation correcte. Pour ce faire, j'essaie d'aligner la minuterie. Cela constitue cependant un problème. Lors du retour des millisecondes, il renvoie souvent .01 .1 ou même pas de millisecondes. C'est légèrement jeter de l'alignement. Une idée de comment le forcer à revenir par exemple .000?Temps de retour maintenant avec une précision de l'ordre de la milliseconde

Basiquement je suis en train de faire ceci:

[DEBUG]|18:48:39.449| Sonar 10d | Sonar1 40d | 7.684386 
[DEBUG]|18:48:39.45| Sonar 10d | Sonar1 10d | 27.54916 
[DEBUG]|18:48:39.5| Sonar 10d | Sonar1 20d | 14.52461 
[DEBUG]|18:48:39| Sonar 10d | Sonar1 30d | 9.878839 

Regardez plus comme ceci:

[DEBUG]|18:48:39.449| Sonar 10d | Sonar1 40d | 7.684386 
[DEBUG]|18:48:39.450| Sonar 10d | Sonar1 10d | 27.54916 
[DEBUG]|18:48:39.500| Sonar 10d | Sonar1 20d | 14.52461 
[DEBUG]|18:48:39.000| Sonar 10d | Sonar1 30d | 9.878839 

Sans utiliser trop de code comme je le fais en ce moment.

Code actuel:

DateTime time = DateTime.Now;  
time.ToString("HH:mm:ss.FFF"); 

Et puis trop de code pour ajouter le. et 0 ...

+2

Une ligne est considérée comme "trop ​​de code"? Que demandez-vous exactement? – Amy

+0

Vous savez '18: 48: 39.45' signifie la même chose que' 18: 48: 39.450', non? – Plutonix

+2

Dans le cas où cela est pertinent pour d'autres champs, vous pouvez être intéressé par String.PadRight (https://msdn.microsoft.com/en-us/library/system.string.padright(v=vs.110).aspx). Cela remplira une chaîne à une longueur donnée. Utile si par exemple vous vous retrouvez avec un Sonar10 ou quelque chose comme ça. – Chris

Répondre

5

Utilisation fff au lieu de FFF

time.ToString("HH:mm:ss.fff"); 

Exemple

var now = new DateTime(2017,10,18,12,16,16, 10); 
Console.WriteLine("What you want {0:HH:mm:ss.fff}", now); 
Console.WriteLine("WHat you have {0:HH:mm:ss.FFF}", now); 

produit une sortie

What you want 12:16:16.010 
WHat you have 12:16:16.01 

Pour plus d'options de chaîne de format voir Custom Date and Time Format Strings

+0

Parfait. C'était ce que je cherchais –

0

Vous pouvez essayer une ligne comme celle ci-dessous (notez la minuscule f)

time.ToString("HH:mm:ss.fff"); 

Vous pouvez le tester avec le code ci-dessous

var s = DateTime.ParseExact("20170810 18:20:13", "yyyyMMdd HH:mm:ss", null).ToString("HH:mm:ss.fff"); 

Cela devrait imprimer la sortie suivante

18:20:13.000