我有一些代碼碾碎了很多數據,所以我在星期四開始了它,並在週末讓它運行。星期一,我回來了,看到它結束了。我使用了秒錶功能來跟蹤代碼的運行時間。不過,我結束了秒錶已經過輸出
Elapsed: 2.18:57:55.xxx
據我所知,它的輸出通常H:M:SS,但不明白的第一位,特別是因爲它已經運行了天。它只是從幾小時轉換到幾天?我離開它跑了那麼久,它打破了?編輯:對不起,我並不是說它在星期一就完成了。我的意思是,星期一(當我回到電腦的時候),它已經完成了。
我有一些代碼碾碎了很多數據,所以我在星期四開始了它,並在週末讓它運行。星期一,我回來了,看到它結束了。我使用了秒錶功能來跟蹤代碼的運行時間。不過,我結束了秒錶已經過輸出
Elapsed: 2.18:57:55.xxx
據我所知,它的輸出通常H:M:SS,但不明白的第一位,特別是因爲它已經運行了天。它只是從幾小時轉換到幾天?我離開它跑了那麼久,它打破了?編輯:對不起,我並不是說它在星期一就完成了。我的意思是,星期一(當我回到電腦的時候),它已經完成了。
是 - 這是的TimeSpan.ToString
格式:
返回的字符串被格式化與 「c」 的格式說明,並具有以下的格式:
[ - ] [d]爲hh:mm :ss [.fffffff]
方括號([和])中的元素可能不包含在返回的字符串中。冒號和句點(:和。)是文字字符。下表列出了非文字元素。請注意,ToString()方法返回的字符串不區分大小寫。
由於沒有顯示總小時數的格式說明符,因此您需要計算它。如果您希望小時顯示爲單個數字,請使用:
TimeSpan ts = new TimeSpan(2,18,57,55);
var output = string.Format("{0}:{1}",
ts.Days*24 + ts.Hours,
ts.ToString("mm\\:ss\\.ffff"));
//output = `66:57:55.0000`
如果週四開始並在星期一進行檢查,那麼週五,週六和週日全部都是中間的;我們會期望一個'3.something',不是嗎? – 2013-03-04 14:56:11
它更容易使用'ts.TotalHours' – SysDragon 2013-03-04 15:03:41
@SysDragon除Totalhours包括小數部分,並將如果您格式化它沒有小數四捨五入 - 您可以截斷數字,但真的會更容易? – 2013-03-04 15:07:01
這是預期的行爲。從文檔爲Timespan.ToString():
返回的字符串被格式化與 「c」 的格式說明,並具有以下的格式:
[ - ] [d]爲hh:mm:ss的[.fffffff]
「d」 - 時間間隔中的天數。如果時間間隔小於一天,則此元素被省略。
如果星期四開始並在星期一進行檢查,那麼週五,週六和週日全部都是中間的;我們會期望一個'3.something',不是嗎? – 2013-03-04 14:56:23
@MarcGravell問題不清楚,但從更新很明顯,問題是關於輸出格式,而不是輸出值:) – 2013-03-04 15:04:13
你的機器在沒有其他任何事情時可能暫停/休眠? – 2013-03-04 14:53:25
你在輸出上調用了ToString()嗎? – 2013-03-04 14:53:27
另外:有沒有可能在週五開始,而不是週四? – 2013-03-04 14:56:40