我必须有两个约会时间
int
我如何计算两个日期时间之间的总时间。
我正在使用此代码
Datetime d1 = Convert.ToDateTime("2018-03-13T00:30");
Datetime d2 = Convert.ToDateTime("2018-03-14T06:05");
d1 Datetime timezone is "8"
d2 Datetime timezone is "-7"
但是小时数( - )负值
答案 0 :(得分:2)
你只需要把时间变成一个共同的时区,然后找出差异:
Datetime d1 = Convert.ToDateTime("2018-03-13T00:30");
Datetime d2 = Convert.ToDateTime("2018-03-14T06:05");
// this is now "2018-03-13T08:30"
Datetime d1Common = d1.AddHours(8);
// this is now "2018-03-13T11:05"
Datetime d2Common = d2.AddHours(-7);
//TimeSpan difference = d1Common - d2Common;
//I'm pretty sure you want the difference this way around.
TimeSpan difference = d2Common - d1Common;
int hoursDifference = difference.TotalHours;
int daysDifference = difference.TotalDays;
// .....etc.
如果这些是正确的时区,则d1和d2之间的差异将为负。 d1发生在d2之前。即使你允许时差,我想你可能想要d2Common - d1Common
?
答案 1 :(得分:1)
您应该使用DateTimeOffset
,其中DateTime
具有明确的Offset
属性,因此它具有时区概念。它专门用于处理此类案件。
var d1 = DateTimeOffset.Parse("2018-03-13T00:30+8");
var d2 = DateTimeOffset.Parse("2018-03-14T06:05-7");
Console.WriteLine((d2 - d1).TotalHours); // -> 44.5833333333333