ホームページ >バックエンド開発 >Golang >12 バイトの Int96 タイムスタンプを GoLang タイムスタンプに変換するにはどうすればよいですか?

12 バイトの Int96 タイムスタンプを GoLang タイムスタンプに変換するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-22 12:33:18833ブラウズ

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

Parquet Int96 タイムスタンプを GoLang に変換する

このシナリオでは、12 バイトの int96 タイムスタンプ配列があり、それを GoLang のタイムスタンプに変換します。

通常、int96 タイムスタンプは次のもので構成されます。 8 バイトのナノ秒部分と 4 バイトの日付部分がユリウス日の数値として保存されます。ただし、この場合、最初の 8 バイトは実際にはミリ秒ではなくナノ秒であり、エポックは Unix エポックではなく午前 0 時です。

変換プロセスを説明するために、次の 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。