2012-04-03 33 views
17

我有一個代碼生成一個時間跨度來計算一些行動的持續時間。 我想要做的就是取得這個結果(持續時間)並將它除以一個數字,任意數字。Timespan除以數

我該怎麼做?

+1

我試圖鑄造,但是編譯器返回一個錯誤。如果我得到0.0000000004的結果,我想分割這個數字,比方說,在4中。這只是一個例子。 – Novak 2012-04-03 13:12:58

+1

[Multiply TimeSpan in .NET]可能的重複(http://stackoverflow.com/questions/9909086/multiply-timespan-in-net) – 2012-04-03 13:43:33

回答

7

嘗試

TimeSpan X = ...; 

var Result = X.TotalMilliseconds/WhatEverNumber; 

更多信息參見MSDN

+3

這會給你一個雙倍的時間,而不是TimeSpan。查看其他答案。 – DCShannon 2014-10-18 01:22:35

8

使用TimeSpan這些數字中的一個Total*屬性。

I.e.如果您正在運行五次您測量的某些代碼的迭代,則可以使用

myTimeSpan.TotalMilliseconds/5 

以獲得每次迭代的平均毫秒數。您可以使用Ticks來獲取基礎值並從劃分的結果中構建一個新的TimeSpan

+0

完全,男人! – Oded 2012-04-03 13:12:19

5
TimeSpan ts = ... 
TimeSpan result = TimeSpan.FromTicks(ts.Ticks/divisor); 
25

您可以使用原來的時間跨度的蜱:

var res = new TimeSpan(origSpan.Ticks/aNumberAnyNumber); 
+0

Upvoting,因爲這是第一個整數除法答案,它在可用時幾乎總是一個更好的選擇。 – Ekevoo 2015-09-22 20:06:20

+0

對於偶然碰到這個有用答案的所有VB.NET開發人員:除法運算符是一個_整數_除法,所以使用VB的\運算符(反斜槓)以避免錯誤_Option Strict On不允許從'Double'到'Long'的隱式轉換_。 – 2018-01-17 13:43:15

0

取決於你想要什麼分,但讓我們說你要秒,你可以使用totalseconds屬性。

TimeSpan ts = new TimeSpan(4, 0, 0); //Four hours 

MessageBox.Show((ts.TotalSeconds/4).ToString()); 
3

如果你想用一個新的時間跨度是老的一小部分,以結束:

TimeSpan now = DateTime.Now.TimeOfDay; 
TimeSpan halfOfNow = new TimeSpan(now.Ticks/2);