如何减去日期时间以按照我要求的格式提供结果?

时间:2015-05-06 09:29:39

标签: c# datetime timespan hour

我试图以两种日期时间之间的方式减去所有总时数。(包括mm和ss,如果有的话) 例如:

TimeSpan j = DateTime.Parse("06/05/2015 12:00:00").Subtract(DateTime.Parse("04/05/2015 14:00:00")); 

我想返回一个包含" 46:00:00"

的字符串
TimeSpan j = DateTime.Parse("06/05/2015 12:00:00").Subtract(DateTime.Parse("05/05/2015 12:00:00")); 

我想返回一个包含" 24:00:00"

的字符串
TimeSpan j = DateTime.Parse("06/05/2015 12:00:00").Subtract(DateTime.Parse("05/05/2015 18:00:00")); 

我想返回一个包含" 18:00:00"

的字符串

3 个答案:

答案 0 :(得分:4)

您可以使用TimeSpan.TotalHoursString.Format

string result = string.Format("{0:D2}:{1:D2}:{2:D2}", (int)j.TotalHours, j.Minutes, j.Seconds);

需要转化为int以从TotalHours中删除小数部分。

即使分钟部分为D200也可确保您始终获得两位数字0

MSDN:The "D" (or decimal) format specifier

答案 1 :(得分:0)

尝试这样的事情,

我只为你的第一个条件做了

 DateTime d1 = Convert.ToDateTime( "06/05/2015 12:00:00");
 DateTime d2 = Convert.ToDateTime( "04/05/2015 14:00:00");
 TimeSpan j = d1 - d2;
 string ti = (j.TotalHours + " : " + j.TotalMinutes + " : " + j.TotalSeconds).ToString();

答案 2 :(得分:0)

我做过类似的事情:

TimeSpan j = DateTime.Parse("06/05/2015 12:00:00").Subtract(DateTime.Parse("04/05/2015 14:00:00"));
int i = 0;
if(j.Days >= 1)
{
    i = j.Days * 24;
    i = i + j.Hours;
}
string s = String.Concat(i.ToString(), ":", j.Minutes.ToString(), ":", j.Seconds.ToString());