Answers:
下面的示例演示如何执行此操作:
DateTime a = new DateTime(2010, 05, 12, 13, 15, 00);
DateTime b = new DateTime(2010, 05, 12, 13, 45, 00);
Console.WriteLine(b.Subtract(a).TotalMinutes);
执行时,由于日期/时间之间存在30分钟的差异,因此将打印“ 30”。
结果DateTime.Subtract(DateTime x)
是一个TimeSpan对象,它提供了其他有用的属性。
TotalMinutes
!(不是Minutes
)
您需要TimeSpan
结构:
TimeSpan diff = dateTime1 - dateTime2;
TimeSpan对象表示一个时间间隔(时间或经过的时间),以天,小时,分钟,秒和几分之一秒的正数或负数表示。TimeSpan结构也可用于表示一天中的时间,但前提是该时间与特定日期无关。
有多种方法可以从该结构中获取天,小时,分钟,秒和毫秒。
如果您只是对差异感兴趣,那么:
TimeSpan diff = Math.Abs(dateTime1 - dateTime2);
不论顺序如何,都会给您时间之间的正差。
如果您刚刚有了时间部分,但时间可以在午夜之前进行划分,那么您需要在跨度上增加24小时才能获得实际的时差:
TimeSpan diff = dateTime1 - dateTime2;
if (diff < 0)
{
diff = diff + TimeSpan.FromDays(1);
}
如果它们都是UTC日期时间值,则可以执行 TimeSpan diff = dateTime1 - dateTime2;
否则,在每种可能的情况下获得正确答案的机会都是零。
var startDate = new DateTime(2007, 3, 24);
var endDate = new DateTime(2009, 6, 26);
var dateDiff = endDate.Subtract(startDate);
var date = string.Format("{0} years {1} months {2} days", (int)dateDiff.TotalDays / 365,
(int)(dateDiff.TotalDays % 365) / 30, (int)(dateDiff.TotalDays % 365) / 30);
Console.WriteLine(date);
Console.WriteLine((a - b).ToString(@"hh\:mm\:ss"))
。请参阅:MSDN自定义TimeSpan格式