Python でエポックを datetime に変換する
このチュートリアルでは、Python でエポック秒を Datetime
形式に変換する方法を紹介します。
エポックとは、エポック日-1970 年 1 月 1 日-から経過した秒数を表す用語です。1970 年は UNIX OS のリリース日です。エポックタイムは、UNIX タイムスタンプと交互に呼ばれることもあります。
例えば、2020 年 11 月 25 日(00:00:00)という日付のエポックは 1606262400
であり、これは 1970 年 1 月 1 日からその日付までの経過秒数です。
Python で time
モジュールを使用してエポックを日時に変換する
Python time
モジュールは、便利な時刻関連の関数を提供します。この関数は UNIX のタイムスタンプに関連した計算を多くサポートしています。
例えば、関数 time.localtime()
はエポック秒を引数にとり、9つの時間列からなる時間値列を生成します。
この例では、ランダムなエポック秒を用いてみる。
import time
epoch_time = 1554723620
time_val = time.localtime(epoch_time)
print("Date in time_struct:", time_val)
出力:
Date in time_struct: time.struct_time(tm_year=2019, tm_mon=4, tm_mday=8, tm_hour=19, tm_min=40, tm_sec=20, tm_wday=0, tm_yday=98, tm_isdst=0)
localtime()
はタプル struct_time()
を出力し、エポック時刻の詳細情報と、エポック時刻に含まれる正確な年、月、日、その他の日時の詳細情報を出力します。
time
モジュールには、タプルを日付時刻の形式に変換する別の関数 time.strftime()
があります。
この関数は 2つの引数を受け入れ、第 1 引数には変換するフォーマットを指定した文字列を、第 2 引数には struct_time()
タプルを渡します。
さて、上の例と同じエポック時間を、読みやすい日付時間形式に変換してみましょう。
import time
epoch_time = 1554723620
time_formatted = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(epoch_time))
print("Formatted Date:", time_formatted)
出力:
Formatted Date: 2019-04-08 19:40:20
このフォーマットの他にも、月のフルネームと曜日を含む一般的な日付フォーマットがあります。これを試してみよう。
import time
epoch_time = 1554723620
time_formatted = time.strftime("%A, %B %-d, %Y %H:%M:%S", time.localtime(epoch_time))
print("Formatted Date:", time_formatted)
Formatted Date: Monday, April 8, 2019 19:40:20
strftime()
のもう一つの便利なフォーマットは %c
であり、これはロケールの一般的な日付と時刻の表現です。
time_formatted = time.strftime("%c", time.localtime(epoch_time))
print("Formatted Date:", time_formatted)
出力:
Formatted Date: Mon Apr 8 19:40:20 2019
datetime
モジュールを使って Python でエポックを datetime
に変換する
datetime
は Python の別のモジュールで、時間関連の関数をサポートしています。違いは time
モジュールが Unix のタイムスタンプに焦点を当てているのに対して、datetime
は幅広い日付と時刻の関数をサポートしていますが、time
モジュールが持つ多くの操作をサポートしています。
datetime
には関数 fromtimestamp()
があり、エポック秒と datetime
オブジェクトを受け取ることができます。
このモジュールの別のエポック秒の例を試してみましょう。
datetime
は意図的に 2 回繰り返されます。datetime
モジュールの中には、関数 fromtimestamp()
を持つ datetime
オブジェクトがあります。datetime モジュール内には、関数 fromtimestamp()
を持つ datetime
オブジェクトがあります。import datetime
epoch_time = 561219765
time_val = datetime.datetime.fromtimestamp(epoch_time)
print("Date:", time_val)
もし datetime.datetime
が datetime
モジュール内でのみ使用されているオブジェクトであれば、コードが冗長になるのを避けるためにモジュールからインポートしてください。
from datetime import datetime
出力:
Date: 1987-10-14 22:22:45
datetime
を別の形式に変換するには、datetime()
にも time.strftime()
と同じ機能を提供するユーティリティ関数 strftime()
があります。
import datetime
epoch_time = 561219765
time_formatted = datetime.datetime.fromtimestamp(epoch_time).strftime(
"%A, %B %-d, %Y %H:%M:%S"
)
print("Formatted Date:", time_formatted)
出力:
Formatted Date: Wednesday, October 14, 1987 22:22:45
要約すると、Python で epoch を datetime 形式に変換する主な方法は以下の 2つです。time
と datetime
モジュールはどちらも、日付変換に便利に使える関数を提供しています。
どちらのモジュールにも strftime()
という関数がありますが、これは日付をフォーマットするのに便利な方法です。
ここでは、strftime()
を使って日付の書式設定をカスタマイズできるようにするために、Python の datetime フォーマットに慣れるための参照を紹介します。
Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.
LinkedIn