我有两个HH:MM
的时间作为字符串。我想用下面的格式得到这两个时间的差:
00 Hours : 00 Minutes
我的代码:
string t1 = "23:10";
string t2 = "02:09";
DateTime now = DateTime.Now;
DateTime dt1 = new DateTime(now.Year, now.Month, now.Day,
int.Parse(t1.Split(':')[0]), int.Parse(t1.Split(':')[1]), 0);
DateTime dt2 = new DateTime(now.Year, now.Month, now.Day,
int.Parse(t2.Split(':')[0]), int.Parse(t2.Split(':')[1]), 0);
var result = dt1 - dt2;
Console.WriteLine(result);
结果是:21:01:00
,但我希望写入21 Hours : 01 Minutes
。
有人能帮帮我吗?
2条答案
按热度按时间yhqotfr81#
1)您可以使用TimeSpan.Parse()来代替
DateTime
。2)要显示预期的格式,可以使用TimeSpan format strings并指定格式:
结果:
21小时01分钟
注:
在
toString()
中的hh
和mm
:一位数的小时/分钟有一个前导零。piwo6bdm2#
您只需要更改结果字符串的格式
以下是有关Decimal格式说明符(D)的详细信息:
“D”(或decimal)格式说明符将数字转换为十进制数字(0-9)的字符串,如果数字为负数,则以减号作为前缀。只有整型才支持此格式。
精度说明符指示结果字符串中所需的最小位数。如果需要,将在数字左侧填充零,以生成精度说明符指定的位数。如果未指定精度说明符,则默认值为表示不带前导零的整数所需的最小值。
结果字符串受当前NumberFormatInfo对象的格式设置信息的影响。如下表所示,单个属性会影响结果字符串的格式设置。