2017-01-19 35 views
1

我剛開始使用Unity,並且我不知道如何在我的代碼設計器VS中工作時正確調試腳本。String.Format和TimeSpan問題

我有這樣的代碼的腳本這不會給我我想要的格式:

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

我想是這樣的:在給定的格式「0點07分32秒」:「MM: ss:ff「

我只是想要最簡單的方法來切斷除了每個時間單位的2位數以外的所有數字。 任何想法?

關心Kalrin。

編輯(升級): 我修改了代碼。現在,它看起來像這樣:

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

不過當我去測試我的遊戲,我得到3個數字顯示毫秒 - 這究竟是爲什麼?

是這樣的: UI Text component in Unity

編輯: 我找到了一個解決方案,我的最後一個問題:

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

所有我需要的是建立一個只包含一個.Substring(0,2) 2個整數的第一個數字。

Thx對於那些試圖幫助的人! 看起來不錯!!:

Working Example

乾杯!

回答

4

您正在向Format()傳遞三個數字。

數字不識別``m , s , or f`,所以它們只是打印文字字符。

你想要格式字符串00填充每個數字爲兩位數字。

此外,你實際上並不需要.Total*;請參閱文檔。

+0

感謝這個作品! :) 你能告訴我天氣還有更好的方法嗎? 另外,IFormatProvider中有沒有什麼可以在每個單元之間包含「:」? – Kalrin

+0

你可以把':'s放入字符串本身。 – SLaks

+0

謝謝! - 你會看看我在帖子中的修改嗎? - 似乎我在最後一種格式(毫秒)得到3位數字。 – Kalrin

2

我建議你嘗試

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

統一可能不支持;它被添加到一個相當新的框架版本。 – SLaks

+0

我試過這個: return(timeElapsed。分鐘+ timeElapsed.Seconds + timeElapsed.Milliseconds).ToString(「mm:ss:ff」); - 沒有工作 - 沒有任何東西傳遞給文本組件。 – Kalrin

+1

@Kalrin:格式字符串適用於'TimeSpan',而不是數字。 – SLaks