Python でエポックを datetime に変換する

Rayven Esplanada 2023年10月10日
  1. Python で time モジュールを使用してエポックを日時に変換する
  2. datetime モジュールを使って Python でエポックを datetime に変換する
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.datetimedatetime モジュール内でのみ使用されているオブジェクトであれば、コードが冗長になるのを避けるためにモジュールからインポートしてください。

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つです。timedatetime モジュールはどちらも、日付変換に便利に使える関数を提供しています。

どちらのモジュールにも strftime() という関数がありますが、これは日付をフォーマットするのに便利な方法です。

ここでは、strftime() を使って日付の書式設定をカスタマイズできるようにするために、Python の datetime フォーマットに慣れるための参照を紹介します。

Rayven Esplanada avatar Rayven Esplanada avatar

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

関連記事 - Python DateTime