如何获取c#中不同时区的两个日期时间的总时间

时间:2018-02-08 08:55:19

标签: c#

我必须有两个约会时间

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"

但是小时数( - )负值

2 个答案:

答案 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