DateTimeOffset.MaxValue.ToUnixTimeMilliseconds() 稳定吗?

Is DateTimeOffset.MaxValue.ToUnixTimeMilliseconds() stable?

提问人:Morten Boysen 提问时间:7/4/2023 最后编辑:Zohar PeledMorten Boysen 更新时间:7/4/2023 访问量:52

问:

我正在尝试使用(这是253402300799999)为某些数据指定最大值。
这个时间基本上代表“从不”或未设置。我也可以使用一个 空 ,但我宁愿不这样做,因为它会在整个代码库中引入空检查。
DateTimeOffset.MaxValue.ToUnixTimeMilliseconds()DateTimeOffset

我需要对这些时间的实例进行比较和相等性检查。
由于我需要在将它们更改为后对这些进行比较,因此对我来说稳定很重要。
换句话说,它需要始终等于253402300799999。 我能保证是这样吗,即使将来的某个时候增加或减去闰秒?
longDateTimeOffset.MaxValue.ToUnixTimeMilliseconds()

P.S. 由于各种原因,在这种情况下,NodaTime或类似的库不是一个选择。

C# .NET 日期 时间 偏移量

评论


答:

3赞 Zohar Peled 7/4/2023 #1

TL的;博士;- 是的,该值是稳定的,在将来的版本中不太可能更改。

由于记录了 DateTimeOffset.MaxValue 的值,因此在可预见的将来,它不太可能更改。

DateTimeOffset.MaxValue Field 官方文档的备注部分明确指出:

此常量的值为 12/31/9999 11:59:59 PM +00:00。

此外,ToUnixTimeMilliseconds 被记录为返回自 1970 年 1 月 1 日正好在午夜(即 unix 纪元)通过的毫秒数。

它的备注部分明确指出它不计算闰秒:

Unix 时间表示自 1970-01-01T00:00:00Z(1970 年 1 月 1 日凌晨 12:00 UTC)以来经过的秒数。它不考虑闰秒。此方法返回 Unix 时间的毫秒数。

但是,如果您选择不信任官方文档,您可以选择任何随机的未来日期作为您的“从不”(或“始终”)点——只要它足够远,您对它保持一致,并在代码中为它使用合理的常量名称。就我个人而言,我喜欢使用 2525 年 1 月 1 日