簡體   English   中英

時間跨度和 ToString()

[英]TimeSpan and ToString()

我想顯示保存在TimeSpan中的分鍾、秒和毫秒。 它應該是這樣的:

var d1 = new DateTime(2020, 12, 1, 12, 00, 00);
var d2 = new DateTime(2020, 12, 1, 10, 12, 30);
        
var d = d1 - d2;
Console.WriteLine(d.ToString(@"mm\:ss\:fff"));

但它返回47:30:000這只是部分正確,因為它忽略了一個小時。 我希望它被轉換成分鍾,而不是被忽略。

我認為您需要 TimeSpan.TotalMinutes。

https://learn.microsoft.com/en-us/do.net/api/system.timespan.totalminutes?view.net-7.0

在您的情況下,它可能是:

Console.WriteLine($@"{(int)d.TotalMinutes}:{d:ss\:fff}");

TimeSpan有一個屬性,用於獲取其中包含的總分鍾數,作為double精度值: TimeSpan.TotalMinutes Property

請注意,如果您的TimeSpan的持續時間不是整分鍾,您將得到一小部分:

var d1 = new DateTime(2020, 12, 1, 12, 00, 00);
var d2 = new DateTime(2020, 12, 1, 10, 12, 30);
var d = d1 - d2;
Console.WriteLine(d.TotalMinutes);

Output:

107.5

請注意, TimeSpan具有與TotalDaysTotalHoursTotalSecondsTotalMilliseconds類似的屬性。


更新:
根據下面的評論,這里有一個以分、秒和毫秒格式打印的解決方案:

var d1 = new DateTime(2020, 12, 1, 12, 00, 00);
var d2 = new DateTime(2020, 12, 1, 10, 12, 30);
var d = d1 - d2;
double totalMin = d.TotalMinutes;
int totalMinInt = (int)totalMin;             // will get only the whole minutes.
Console.WriteLine(totalMinInt.ToString() +   // print the whole minutes part
                  ":" +
                  d.ToString(@"ss\:fff"));   // print the fraction part

Output:

107:30:000

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM