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

本文关键字:之间 时间 对象 DateTime 两个 格式化 | 更新日期: 2023-09-27 18:07:33

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

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

试试这个。

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

根据MSDN:https://msdn.microsoft.com/en-us/library/ee372287(v=vs.110(.aspx

自定义TimeSpan格式说明符不包括占位符分隔符,例如将天与小时、小时与分钟或秒与小数秒分隔开的符号。相反,这些符号必须作为字符串文字包含在自定义格式字符串中。例如,"dd.hh:mm"将句点(.(定义为天和小时之间的分隔符,将冒号(:(定义为小时和分钟之间的分隔符号。

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

因为没有"HH"格式。试试"H"或"hh"。MSDN

(EndTime - StartTime).ToString();

DateTime中减去DateTime会得到一个TimeSpan对象,该对象提供一个完全按照您的意愿格式化的.ToString()。请参阅TimeSpan.ToString((.

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

假设您只需要hh:mm:ss,那么默认的.ToString()就可以了。

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

string str = endtime.Subtract(startime).ToString("dd'':hh'':mm'':ss");
(endTime - startTime).ToString("dd'd 'hh'h 'mm'm 'ss's'");

输出一个可读性很强的字符串如下:

38d 22h 58m 50s

请注意,要在各部分之间有空格,空格也必须用单引号括起来,例如'm '