我有两个DateTime
个对象 - StartDate
和EndDate
我想格式化两个日期之间的差异,例如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
答案 0 :(得分:4)
试试这个。
EndTime.Subtract(StartDate).ToString("hh\\:mm\\:ss");
根据MSDN:https://msdn.microsoft.com/en-us/library/ee372287(v=vs.110).aspx
自定义TimeSpan格式说明符不包括占位符分隔符符号,例如将小时数与小时数,小时数与分数小时数或秒数与小数秒数分隔开的符号。相反,这些符号必须作为字符串文字包含在自定义格式字符串中。例如,“dd.hh:mm”将句点(。)定义为天和小时之间的分隔符,并将冒号(:)定义为小时和分钟之间的分隔符。
因此,要使用“:”作为分隔符,必须在其前面加上“\”。
答案 1 :(得分:1)
(EndTime - StartTime).ToString();
从DateTime
中减去DateTime
会产生一个TimeSpan
对象,该对象提供.ToString()
,可以根据您的需要对其进行格式化。请参阅TimeSpan.ToString()。
您还可以通过提供记录格式here(标准格式字符串)和here(自定义格式字符串)来指定所需格式。
鉴于你只想要hh:mm:ss,默认的.ToString()
就是这样。
答案 2 :(得分:1)
因为没有" HH"格式。试试" H"或者" hh"。 MSDN
答案 3 :(得分:0)
您可以使用以下格式"dd\\:hh\\:mm\\:ss"
string str = endtime.Subtract(startime).ToString("dd\\:hh\\:mm\\:ss");
答案 4 :(得分:0)
(endTime - startTime).ToString("dd'd 'hh'h 'mm'm 'ss's'");
输出如下所示的可读字符串:
38d 22h 58m 50s
请注意,要在各部分之间留有空格,空格也必须用单引号引起来,例如'm '
。