2015-08-13 127 views
2

我有两个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

回答

4

试试这个。

EndTime.Subtract(StartDate).ToString("hh\\:mm\\:ss"); 

Acccording到MSDN:https://msdn.microsoft.com/en-us/library/ee372287(v=vs.110).aspx

自定义时间跨度格式说明不包括占位符分离器的符号,诸如符号,从小时分开的日子,从分钟,或分数秒秒小时。相反,这些符号必须作为字符串文字包含在自定义格式字符串中。例如,“dd.hh:mm”将句点(。)定义为日期和小时之间的分隔符,并将冒号(:)作为小时和分钟之间的分隔符。

因此,要使用':'作为分隔符,必须在其前面包括'\'。

1
(EndTime - StartTime).ToString(); 

TimeSpan对象,它提供了一个.ToString()进行格式化它到底你想减去一个DateTime结果DateTime。见TimeSpan.ToString()

您还可以通过提供记录为here(标准格式字符串)和here(自定义格式字符串)的格式来指定所需的格式。

鉴于你只是希望hh:mm:ss,默认.ToString()只是给你。

1

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

0

您可以使用以下格式"dd\\:hh\\:mm\\:ss"

string str = endtime.Subtract(startime).ToString("dd\\:hh\\:mm\\:ss"); 
相关问题