エポック秒(UNIX時間)
前にプログラミングの中の時間ではエポック秒(UNIX時間)という通常の日時とは違う時間形式を使うことがあることを紹介しました。
その際には1970年1月1日午前0時0分0秒を基準として、そこからの経過時間として表記する方法です、とだけ紹介して、どのように使うのか、通常の日時への変換をどうやるのかなどは紹介しませんでした。
ということで今回はエポック秒と通常の日時の相互変換をPythonを使って試していこうと思います。
エポック秒(UNIX時間)の基礎知識
前にも、そして先ほどにもお話しした通り、エポック秒は「1970年1月1日午前0時0分0秒を基準として、そこからの経過時間とした表記」です。
つまり基準の時間(1970年1月1日午前0時0分0秒)は「0」。
そして基準の時間の10秒後(1970年1月1日午前0時0分10秒)は「10」。
基準の時間の1分後(1970年1月1日午前0時1分0秒)は「60」。
基準の時間の1時間後(1970年1月1日午前1時0分0秒)は「3,600」。
基準の時間の1日後(1970年1月2日午前0時0分0秒)は「86,400」。
基準の時間の30日後(1970年1月30日午前0時0分0秒)は「2,592,000」。
基準の時間の1年後=365日後(1971年1月1日午前0時0分0秒)は「31,536,000」。
といった感じです。
それでは2022年1月1日午前0時0分0秒のエポック秒はいくつでしょうか?
前に紹介した現在時間とエポック秒の変換ができるこちらのサイトによると「1,640,962,800」だそうです。
このように単純に経過秒だけで表すことにより、複雑な年月の計算(月によって日数が異なる、閏年など)が省けて計算が楽になるというメリットがあるのではないかなと思います(個人の感想です)。
なんにせよプログラムで時間を扱っているとたまに出てくるので、その扱いを勉強しておくのはいいことでしょう。
ではでは始めていきましょう。
エポック秒(UNIX時間)の取得
まずはエポック秒の取得をしてみましょう。
ちなみにこの記事を書いているのは2021年11月12日午後10時過ぎですので、そこらへんの時間が出てきます。
import time
epoch_now = time.time()
print(epoch_now)
実行結果
1636722806.2008278
エポック秒を取得するには「timeモジュール」をインポートし、「time.time()」で取得します。
次にこの取得したエポック秒を日時に変換してみましょう。
import datetime
normal_now = datetime.datetime.fromtimestamp(epoch_now)
print(normal_now)
実行結果
2021-11-12 22:13:26.200828
エポック秒を日時に変換するには「datetimeモジュール」の「datetime.datetime.fromtimestamp(エポック秒)」で変換できます。
そしてこの変換した日時を再度エポック秒に変換してみましょう。
to_epoch_now = datetime.datetime.timestamp(normal_now)
print(to_epoch_now)
実行結果
1636722806.200828
通常の日時からエポック秒に変えるには、「datetime」モジュールの「datetime.datetime.timestamp(日時)」とします。
datetimeモジュールを使うとこんな感じに簡単に変換できました。
今度からはエポック秒が出てきた時は積極的に日時に変換していきたいものです。
ではでは今回はこんな感じで。
コメント