使用nodatime如何查找两个ZonedDateTime对象之间的差异



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

编辑-示例:

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

这些是在本地时间设置为"美国/洛杉矶"的服务器上计算的。

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

试试这个:

ZonedDateTime t1 = LocalDateTime.FromDateTime(startTime).InUtc();
ZonedDateTime t2 = LocalDateTime.FromDateTime(endTime).InUtc();
Duration diff = t2.ToInstant() - t1.ToInstant();

"在两个周期之间"没有多大意义,因为ZonedDateTime不是周期。如果你有两个ZonedDateTime值,你可能只需要对它们都调用ToInstant,然后从另一个瞬间减去一个瞬间就可以得到持续时间。。。"

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

最新更新