提问人:Morten Boysen 提问时间:7/4/2023 最后编辑:Zohar PeledMorten Boysen 更新时间:7/4/2023 访问量:52
DateTimeOffset.MaxValue.ToUnixTimeMilliseconds() 稳定吗?
Is DateTimeOffset.MaxValue.ToUnixTimeMilliseconds() stable?
问:
我正在尝试使用(这是253402300799999)为某些数据指定最大值。
这个时间基本上代表“从不”或未设置。我也可以使用一个 空 ,但我宁愿不这样做,因为它会在整个代码库中引入空检查。DateTimeOffset.MaxValue.ToUnixTimeMilliseconds()
DateTimeOffset
我需要对这些时间的实例进行比较和相等性检查。
由于我需要在将它们更改为后对这些进行比较,因此对我来说稳定很重要。
换句话说,它需要始终等于253402300799999。
我能保证是这样吗,即使将来的某个时候增加或减去闰秒?long
DateTimeOffset.MaxValue.ToUnixTimeMilliseconds()
P.S. 由于各种原因,在这种情况下,NodaTime或类似的库不是一个选择。
答:
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 日。
评论