2

以下によって与えられる Unix タイムスタンプ:

int(time.time())

1970 年 1 月 1 日から経過した秒数をうるう秒なしで返します。

好奇心から、うるう秒を含めて、この日付から実際に経過した秒数を取得するにはどうすればよいですか? (つまり、時間軸上でのこれら 2 つのイベント間の距離)

ノート:

  • 例: 867715190.000 .. 867715202.0001997 年のこの日はうるう秒があったため、タイムスタンプの範囲は 13 秒 (タイマーで測定) の「実際の期間」を表しますが、Unix のタイムスタンプは+12しか増加していません。

  • 例 2: 1970 年 1 月 1 日から 2020 年 1 月 1 日までの実際の経過時間 (この 50 年間隔で 12 うるう年) は、 is(365*50+12)*24*3600 + number_leap_secondsであり、not (365*50+12)*24*3600です。datetime.datetime.utcfromtimestamp((365*50+12)*24*3600)しかし、はであることがわかります2020-01-01 00:00:00。明らかに、うるう秒は考慮されていません。

  • Python はうるう秒で何を返しますか、およびUnix 時間とうるう秒にリンクされています

4

2 に答える 2

2

1972 年 1 月 1 日以降の任意の 2 つの UTC タイムスタンプ間の SI 秒数は、UTC に導入されたうるう秒のリストへのアクセスを必要とします。このリストは、IANA tzdata ディストリビューションの一部として入手でき、他のソースから入手することもできます。

1970-01-01 と 1972-01-01 の間の SI 秒数は 2x365x24x60x60 + 1.999918 SI 秒であるため、注意が必要です。1970 年の公式時間は、セシウム原子ではなく、実際に回転を測定することによって決定されたからです。したがって、公式の秒は SI 秒ではなく平均太陽秒でした。

于 2021-01-05T01:30:56.807 に答える