我想把一个日期转换成nanoseconds since unix epoch.但它有一个限制,它对1678年之前或2262年之后的日期有未定义的行为。这是什么原因呢?
ttygqcqt1#
只是为了回答这个问题:((2^64)/(10^9))/(60 * 60 *24 * 365.25)~= 584.5年1678 + 584 = 2262所以是的,选择日期范围是因为这是int 64的范围。由于584 / 2 = 292和1678 + 292 = 1970,我怀疑0(旧纪元日期:1970/01/01)是新范围的中间。这是有意义的,因为这意味着可以通过将整数值乘以/除以10的幂来更改精度
1条答案
按热度按时间ttygqcqt1#
只是为了回答这个问题:
((2^64)/(10^9))/(60 * 60 *24 * 365.25)~= 584.5年
1678 + 584 = 2262
所以是的,选择日期范围是因为这是int 64的范围。
由于584 / 2 = 292和1678 + 292 = 1970,我怀疑0(旧纪元日期:1970/01/01)是新范围的中间。这是有意义的,因为这意味着可以通过将整数值乘以/除以10的幂来更改精度