首页 >后端开发 >Golang >如何将 12 字节 Int96 时间戳转换为 GoLang 时间戳?

如何将 12 字节 Int96 时间戳转换为 GoLang 时间戳?

Susan Sarandon
Susan Sarandon原创
2024-12-22 12:33:18830浏览

How to Convert a 12-Byte Int96 Timestamp to a GoLang Timestamp?

将 Parquet Int96 时间戳转换为 GoLang

在这种情况下,您有一个 12 字节的 int96 时间戳数组,并希望将其转换为 GoLang 中的时间戳。

通常,int96 时间戳由 8 字节纳秒组成部分和存储为儒略日数的 4 字节日期部分。然而,在这种情况下,前 8 个字节实际上是纳秒,而不是毫秒,纪元是午夜,而不是 Unix 纪元。

为了说明转换过程,让我们考虑以下 int96 时间戳:

[128 76 69 116 64 7 0 0 48 131 37 0]

正确解释:

  1. 反转前 8 个字节获取纳秒部分:0x0000000029324BFD
  2. 将其转换为整数:45296 * 10^9 纳秒
  3. 将结果转换为秒:45296 秒
  4. 从中提取时间分量秒:12小时34分56秒
  5. 反转最后4个字节得到儒略日数:0x00256859
  6. 转换为整数:2451545
  7. 使用儒略日日历查找对应的日期: 2000-01-01

因此,int96 时间戳 [128 76 69 116 64 7 0 0 48 131 37 0] 代表 GoLang 中的时间戳 2000-01-01 12:34:56。

以上是如何将 12 字节 Int96 时间戳转换为 GoLang 时间戳?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn