2011-02-24 77 views
2

如何截斷C#中的時間跨度對象的秒位?即15:37TimeSpan刪除秒

我輸出的時間跨度對象格式爲HH:mm的JavaScript,並希望服務器端處理提供正確的格式,而不是客戶端瀏覽器,可以做到這一點,而不提供此爲一個C#字符串對象到JavaScript?

+0

如果你格式化時間跨度爲HH:MM是不是已經秒鐘截斷? – 2011-02-24 22:46:43

+0

您是否真的想將TimeSpan中的秒數設置爲0,或者在轉換爲字符串時只是省略它們? – CodesInChaos 2011-02-24 22:46:45

+0

看看這個答案http://stackoverflow.com/questions/338658/can-you-round-a-net-timespan-object/338705#338705 – 2011-02-24 22:52:46

回答

8

您可以截斷 '滴答' 值這是一個時間跨度的核心:

TimeSpan t1 = TimeSpan.FromHours(1.551); 
Console.WriteLine(t1); 
TimeSpan t2 = new TimeSpan(t1.Ticks - (t1.Ticks % 600000000)); 
Console.WriteLine(t2); 

給出:

01:33:03.6000000 
01:33:00 
+0

謝謝,但我需要01:33在我的情況下輸出 – Maya 2011-02-24 22:57:58

+0

@Maya「1:33」是一個字符串。你剛纔說你想要一個TimeSpan而不是一個字符串。 – CodesInChaos 2011-02-24 22:59:54

+0

然後,您需要發送預格式化的字符串,而不是TimeSpan。我看過這個問題,'我怎麼做,而不發送一個字符串',抱歉。 – 2011-02-24 23:00:04

0

我相信這就是你要找的。

string.Format("{0:H:mm}",myTime) 
+0

如果'myTime'是'TimeSpan'(* System.FormatException:輸入字符串的格式不正確*。) – 2011-02-24 22:52:52

+0

@Fredrik,那麼這段代碼會崩潰,不過,對不起,'H:mm'應該是您要查找的轉換器。 – 2011-02-24 22:59:22

+0

我不明白你的意思。 'H:mm'不是[TimeSpan]的格式字符串(http://msdn.microsoft.com/zh-cn/library/ee372287.aspx)。對於'DateTime'是的,但不適用於'TimeSpan'。 – 2011-02-24 23:03:43

18

您可以使用格式字符串爲:

public string GetTimeSpanAsString(TimeSpan input) 
{ 
    return input.ToString(@"hh\:mm"); 
} 
0

也許是這樣的。這將使用整數除法的截斷截斷爲幾分鐘,接着乘除數。

return TimeSpan.FromTicks(input.Ticks/TicksPerMinute*TicksPerMinute); 
0

也許不是最優的,但容易閱讀:

TimeSpan.FromMinutes((long)duration.TotalMinutes);