+/-9.2e18 年的时间跨度是什么意思?

数据挖掘 时间序列 麻木的 数学 时代 时间
2021-10-10 23:51:29

我能够将 9.2e18 AD 转换为日期,但我对确切的日期感到困惑。哪个日期是公元 9.2e18 和公元前 9.2e18?

时间跨度(绝对) - [9.2e18 BC, 9.2e18 AD] 即 +/- 9.2e18 年

NumPy 文档,“日期时间和时间增量”下的“日期时间单位”部分

代码 意义 时间跨度(相对) 时间跨度(绝对)
+/- 9.2e18 年 [公元前9.2e18,公元9.2e18]
+/- 7.6e17 年 [公元前7.6e17,公元7.6e17]
W 星期 +/- 1.7e17 年 [公元前1.7e17,公元1.7e17]
D +/- 2.5e16 年 [公元前2.5e16,公元2.5e16]
  1. 我已将 9.2e18(纪元 - 我相信它以纪元表示)转换为日期。它给了我非常大的约会,这是我没想到的。我的假设准确吗?
  2. 从公元前 9.2e18 开始,根据日期 1970-01-01 涵盖了多少年?
  3. 有哪些示例使用此时间跨度来判断我的假设,以使用 NumPy 的单位获得 9.2e18 BC 和 9.2e18 AD 的日期?
2个回答

从您提到的文档中:“跨度的长度是 64 位整数的范围乘以日期或单位的长度。”

64 位整数的值为 from -2^63to 2^63-1,与 from -9.2e18to相同9.2e18因此,时间跨度列向您显示如果仅使用相应的单位,您将涵盖哪些日期。请注意,即年的时间跨度比几个月的时间跨度大 12 倍,比几周的时间跨度大 52 倍。

因此,日期 9.2e18BC 实际上比基督早 9.2 quintillions 年

UPD 澄清评论

首先,有两个不同的概念——日期(如 2021 年 8 月 10 日)和持续时间(如两年)。后者在python中称为时间增量。而且你不能从日期中添加/减去 numpy 的年份,因为不同的年份有不同的时间量——比如 365 或 366 天。但是,您基本上可以减去这样的天数:

start_date = np.datetime64('0000-01-01')
days_to_substract = np.timedelta64(100, 'D')
print(start_date - days_to_substract) # initial date minus 100 days
>>> -001-09-23

请注意,您实际上可以使用datetime在 vanilla python 中使用日期进行操作,但如另一个答案中所述,对于没有 numpy 的基本 python,日期不能小于 01-01-0001

1 (Y)ear = 3.154e+16 纳秒。

在科学计数法中,“E”指的是 10 的幂。所以 (9.2E+18) 用科学记数法写成“9.2 × 10^18”。(9.2E+18) 的十进制值将等于 9200000000000000000。

关于 (Y)ears,值 (9.2E+18) 是什么意思?

  • 9.2 x 10^18 毫秒 = 291,536,394 年。
  • 9.2 x 10^18 纳秒 = 291.53639 年。

DateTime 值类型表示日期和时间,其值范围从 00:00:00(午夜)、0001 年 1 月 1 日 Anno Domini(普通时代)到 11:59:59 PM、9999 年 12 月 31 日(公历)日历。