Go语言 为什么有些日期不能用纳秒来表示?

n9vozmp4  于 2023-08-01  发布在  Go
关注(0)|答案(1)|浏览(96)

我想把一个日期转换成nanoseconds since unix epoch.但它有一个限制,它对1678年之前或2262年之后的日期有未定义的行为。这是什么原因呢?

ttygqcqt

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的幂来更改精度

相关问题