C# 使用nodatime如何找到两个ZoneDateTime对象之间的差异

C# 使用nodatime如何找到两个ZoneDateTime对象之间的差异,c#,datetime,timezone,nodatime,C#,Datetime,Timezone,Nodatime,使用nodatime如何查找两个ZoneDateTime对象之间的差异,特别是在ZoneDateTime时区中 编辑-示例: 例如,我在一个时区有两个日期,让我们使用“欧洲/斯德哥尔摩”时间 这些数据是在一台服务器上计算的,该服务器的本地时间设置为“America/Los_Angeles” 我希望在忽略服务器的本地时间的情况下,获得“欧洲/斯德哥尔摩”时区中两个时段之间关于DST的毫秒数。这是因为如果部署到不同的服务器,服务器本地时间可能会更改,如果发生这种情况,我不希望更新代码。尝试以下操作:

使用nodatime如何查找两个ZoneDateTime对象之间的差异,特别是在ZoneDateTime时区中

编辑-示例:

例如,我在一个时区有两个日期,让我们使用“欧洲/斯德哥尔摩”时间

这些数据是在一台服务器上计算的,该服务器的本地时间设置为“America/Los_Angeles”

我希望在忽略服务器的本地时间的情况下,获得“欧洲/斯德哥尔摩”时区中两个时段之间关于DST的毫秒数。这是因为如果部署到不同的服务器,服务器本地时间可能会更改,如果发生这种情况,我不希望更新代码。

尝试以下操作:

ZonedDateTime t1 = LocalDateTime.FromDateTime(startTime).InUtc();
ZonedDateTime t2 = LocalDateTime.FromDateTime(endTime).InUtc();
Duration diff = t2.ToInstant() - t1.ToInstant();
“两个时段之间”没有多大意义,因为ZoneDateTime不是时段。如果您有两个ZonedDateTime值,您可能只需要对这两个值调用ToInstant,然后从另一个瞬间中减去一个瞬间,即可获得持续时间…”


Jon Skeet的这条评论回答了这个问题,调用ToInstant可以使用减法[-]和加法[+]操作员。

checkout@JonSkeet blog你能澄清你的问题吗?如果你想检查他们的时区属性,你可以使用实例的
zone
属性,返回
DateTimeZone
。你想知道两个基本实例之间的运行时间吗?还是想知道墙上时钟时间的差异?例如w您正在寻找的内容在这里非常有用:)@MattJohnson我相信我希望在墙上的时钟时间工作。有关更多信息,请参阅上面的我的编辑。对于JonSkeet,也请参阅上面的我的编辑,希望它能进一步解释。这是从两个
DateTime
值开始的,这不是OP感兴趣的…好吧,我们可以假设OP已经有了
t1
t2
,那么最后一行关于它们之间经过的持续时间是正确的,尽管我们仍然不确定OP是否要求这样做。这就是我希望的。我只是在问你是否要对于自我回答,如果你能把问题更新得更具体一些,至少会有帮助。然后我怀疑还有比这更好的答案可以写出来。。。