使用 nodatime 如何找到两个 ZonedDateTime 对象之间的区别

Using nodatime how do I find the difference between two ZonedDateTime objects

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

编辑 - 示例:

例如,我在一个时区中有两个日期,让我们使用 "Europe/Stockholm" 时间。

这些是在本地时间设置为 "America/Los_Angeles" 的服务器上计算的。

我希望在 "Europe/Stockholm" 时区获取两个时间段之间的毫秒数,同时忽略服务器的本地时间。这是因为如果部署到不同的服务器,服务器本地时间可能会发生变化,如果发生这种情况,我不希望更新代码。

试试这个:

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

"Between two periods" 没有多大意义,因为 ZonedDateTime 不是句点。如果您有两个 ZonedDateTime 值,您可能只需要对它们都调用 ToInstant,然后从另一个中减去一个瞬间以获得持续时间..."=10=]

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