两个DateTime对象之间的格式化时间差异

3

我有两个DateTime对象 - StartDateEndDate。我想要以HH:mm:ss的格式显示两个日期之间的差异。

EndTime.Subtract(StartDate).Hours + ":" +
EndTime.Subtract(StartDate).Minutes + ":" +
EndTime.Subtract(StartDate).Seconds

这个功能很好,但是外观不太美观,我尝试了这样做:
EndTime.Subtract(StartDate).ToString("HH:mm:ss")

但是这会抛出异常:

输入字符串的格式不正确

我做错了什么? 我想要的格式如下 - 01:55:23

5个回答

3
尝试这个。
EndTime.Subtract(StartDate).ToString("hh\\:mm\\:ss");

根据 MSDN:https://msdn.microsoft.com/zh-cn/library/ee372287(v=vs.110).aspx 自定义 TimeSpan 格式说明符不包括占位符分隔符号,例如将天数与小时、小时与分钟或秒与小数秒分隔的符号。相反,这些符号必须作为字符串文字包含在自定义格式字符串中。例如,“dd.hh:mm”将点(.)定义为天和小时之间的分隔符,将冒号(:)定义为小时和分钟之间的分隔符。
因此,要使用“:”作为分隔符,必须在其前面包含“\”。

1

因为没有“HH”格式。请尝试使用“H”或“hh”。 MSDN


1
(EndTime - StartTime).ToString();

从一个DateTime中减去另一个DateTime将得到一个TimeSpan对象,它提供了一个.ToString()方法,可以按照您想要的格式进行格式化。请参阅TimeSpan.ToString()
您还可以通过提供一个格式来指定所需的格式,该格式在此处(标准格式字符串)和此处(自定义格式字符串)有文档记录。
考虑到您只需要hh:mm:ss,使用默认的.ToString()即可。

0
您可以使用以下格式:"dd\\:hh\\:mm\\:ss"
string str = endtime.Subtract(startime).ToString("dd\\:hh\\:mm\\:ss");

0
(endTime - startTime).ToString("dd'd 'hh'h 'mm'm 'ss's'");

输出一个易读的字符串,如下:

38天22小时58分50秒

注意,为了在各部分之间添加空格,空格也必须用单引号括起来,例如'm '


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接