.net 时间跨度和结束字符串()

cgh8pdjw  于 2023-01-22  发布在  .NET
关注(0)|答案(2)|浏览(126)

我想显示保存在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只有一部分是真的,因为它忽略了一个小时,我想把它转换成分钟,而不是忽略。

wj8zmpe1

wj8zmpe11#

我认为您需要TimeSpan. TotalMinutes。
https://learn.microsoft.com/en-us/dotnet/api/system.timespan.totalminutes?view=net-7.0
在您的情况下,它可能是:

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

8tntrjer2#

TimeSpan Struct具有一个属性,用于获取其中包含的总分钟数,作为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);

输出:

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;
var totalMin = d.TotalMinutes;
int totalMinInt = (int)totalMin;
double totalMinFrac = totalMin - totalMinInt;
Console.WriteLine(totalMinInt.ToString() + ":" + 
                  TimeSpan.FromMinutes(totalMinFrac).ToString(@"ss\:fff"));

输出:

107:30:000

相关问题