0

我正在玩弄日期的极端值并意识到一个奇怪的行为:

# 1. normal date in nanoseconds
print(np.datetime64('2020-04-14T00:00:00.000000', 'ns'))
# 2. extreme year date in nanoseconds
print(np.datetime64('-32020-04-14T00:00:00.000000', 'ns'))
# 3. extreme year date as year-month-day
print(np.datetime64('-32020-04-14T00:00:00.000000', 'D'))

给出:

2020-04-14T00:00:00.000000000
1884-06-01T23:24:35.153993728
-32020-04-14

我想知道为什么中间转换给出了完全错误的日期/时间?

4

1 回答 1

2

因为 anp.datetime64[ns]是自 1970-01-01 00:00 以来的 64 位整数纳秒,所以它们只能表示 [1678 AD, 2262 AD] 范围内的日期。该范围之外的所有时间戳都被折叠到其中。

参考:关于日期时间的 numpy 手册

于 2020-04-15T08:44:18.327 回答