2017-01-19 4 views
1

Ich habe gerade begonnen, Unity zu verwenden, und ich weiß nicht, wie Skripts während der Arbeit in meinem Code Designer VS ordnungsgemäß debuggen.String.Format und TimeSpan Probleme

Ich habe diesen Code in einem Skript, das macht mir nicht das Format Ich mag:

private string GetTimeElapsedAsString() 
{ 
    TimeSpan timeElapsed = DateTime.Now.Subtract(_startTime); 
    return string.Format("{0:mm} {1:ss} {2:ff}", timeElapsed.TotalMinutes, timeElapsed.TotalSeconds, timeElapsed.TotalMilliseconds); 
} 

Was ich will, ist so etwas wie diese: „00.07.32“ im gegebenen Format: „mm: ss: ff "

Ich möchte nur den einfachsten Weg, alle außer 2 Ziffern von jeder Zeiteinheit abgeschnitten. Irgendwelche Ideen?

Grüße Kalrin.

BEARBEITEN (fortgeschritten): Ich habe den Code geändert. Jetzt sieht es so aus:

private string GetTimeElapsedAsString() 
{ 
    TimeSpan timeElapsed = DateTime.Now.Subtract(_startTime); 
    return string.Format("{0:00}:{1:00}:{2:00}", timeElapsed.Minutes, timeElapsed.Seconds, timeElapsed.Milliseconds); 
} 

Noch wenn ich mein Spiel zu testen, ich 3 Ziffern Anzeige Millisekunden - Warum ist das passiert ??

sieht wie folgt aus: UI Text component in Unity

EDIT: ich eine Lösung für meine letzte Frage gefunden:

return string.Format("{0:00}:{1:00}:{2}", timeElapsed.Minutes, timeElapsed.Seconds, timeElapsed.Milliseconds.ToString().Substring(0,2)); 

Alles, was ich eine .Substring zu schaffen erforderlich war (0,2), die nur die 2 erste Ziffern der Ganzzahl.

Thx für diejenigen, die versucht haben zu helfen! Sieht gut aus !!:

Working Example

Prost!

Antwort

4

Sie geben drei Zahlen an Format() weiter.

Zahlen nicht erkennen ", s , or f", so dass sie nur literale Zeichen drucken.

Sie möchten die Formatzeichenkette 00, um jede Zahl auf zwei Stellen aufzufüllen.

Sie wollen auch nicht wirklich .Total*; Siehe die Dokumentation.

+0

Dank das funktioniert! :) Kannst du mir sagen, Wetter gibt es einen besseren Weg, es zu tun? Kann ich im IFormatProvider auch ":" zwischen jeder Einheit einfügen? – Kalrin

+0

Sie können ':' s in die Zeichenfolge selbst einfügen. – SLaks

+0

Danke! - Würdest du mir meinen Beitrag in der Post ansehen? - Scheint, ich habe 3 Ziffern im letzten Format (die Millisekunden). – Kalrin

2

Ich schlage vor, Sie versuchen,

ts.ToString("mm:ss:ff"); 
+0

Einheit unterstützt das möglicherweise nicht; Es wurde zu einer relativ aktuellen Framework-Version hinzugefügt. – SLaks

+0

Ich habe folgendes versucht: return (timeElapsed.Minutes + timeElapsed.Seconds + timeElapsed.Milliseconds) .ToString ("mm: ss: ff"); - Hat nicht funktioniert - Der Textkomponente wird nichts übergeben. – Kalrin

+1

@Kalrin: Diese Formatzeichenfolge bezieht sich auf 'TimeSpan', nicht auf Zahlen. – SLaks