PythonでUNIXタイムスタンプと日付・時刻を相互に変換(timestamp, fromtimestamp)
この記事では、PythonでUNIXタイムスタンプと日付・時刻を相互に変換する方法について説明します。`time`モジュールの`time()`、`localtime()`、`strftime()`、`strptime()`、`mktime()`、`fromtimestamp()`関数を使用して、様々な変換方法を学びます。
目次
- UNIXタイムスタンプとは?
- time.time(): 現在のタイムスタンプを取得する
- time.localtime(): タイムスタンプをローカル時間に変換する
- time.strftime(): フォーマット済みの日付時刻文字列を取得する
- time.strptime(): 日付時刻文字列をタイムスタンプに変換する
- time.mktime(): ローカル時間からタイムスタンプを取得する
- time.fromtimestamp(): タイムスタンプからtime構造体に変換する
- 例:タイムスタンプから日付時刻への変換
- 例:日付時刻からタイムスタンプへの変換
- タイムゾーンの考慮
UNIXタイムスタンプとは?
UNIXタイムスタンプは、1970年1月1日00:00:00 UTCからの経過秒数を表す数値です。多くのシステムで日付時刻を扱う際に使用されます。Pythonでは、このタイムスタンプを操作する様々な関数が`time`モジュールに用意されています。
time.time(): 現在のタイムスタンプを取得する
現在のUNIXタイムスタンプを取得するには、`time.time()`関数を使用します。この関数は浮動小数点数でタイムスタンプを返します。
import time
timestamp = time.time()
print(timestamp)
実行すると、現在のタイムスタンプが出力されます。
time.localtime(): タイムスタンプをローカル時間に変換する
`time.localtime()`関数は、UNIXタイムスタンプをローカル時間に変換します。変換結果は、`time.struct_time`オブジェクトとして返されます。
import time
timestamp = 1678886400.0
local_time = time.localtime(timestamp)
print(local_time)
出力は、time.struct_timeオブジェクトとなり、年、月、日、時、分、秒などが含まれます。
time.strftime(): フォーマット済みの日付時刻文字列を取得する
`time.strftime()`関数は、`time.struct_time`オブジェクトやUNIXタイムスタンプから、指定したフォーマットの日付時刻文字列を作成します。
import time
timestamp = 1678886400.0
local_time = time.localtime(timestamp)
formatted_time = time.strftime('%Y-%m-%d %H:%M:%S', local_time)
print(formatted_time)
フォーマット文字列の詳細はPythonのドキュメントを参照してください。例では、YYYY-MM-DD HH:MM:SS形式の文字列が生成されます。
time.strptime(): 日付時刻文字列をタイムスタンプに変換する
`time.strptime()`関数は、フォーマット済みの日付時刻文字列を`time.struct_time`オブジェクトに変換します。
import time
date_string = '2024-03-15 10:00:00'
time_struct = time.strptime(date_string, '%Y-%m-%d %H:%M:%S')
print(time_struct)
変換された`time.struct_time`オブジェクトは、`time.mktime()`関数を使用してタイムスタンプに変換できます。
time.mktime(): ローカル時間からタイムスタンプを取得する
`time.mktime()`関数は、`time.struct_time`オブジェクトからローカルタイムのUNIXタイムスタンプを取得します。
import time
date_string = '2024-03-15 10:00:00'
time_struct = time.strptime(date_string, '%Y-%m-%d %H:%M:%S')
timestamp = time.mktime(time_struct)
print(timestamp)
出力は、ローカルタイムに基づくUNIXタイムスタンプです。
time.fromtimestamp(): タイムスタンプからtime構造体に変換する
`time.fromtimestamp()`関数は、UNIXタイムスタンプをローカル時間に変換し、`time.struct_time`オブジェクトを返します。これは`time.localtime()`関数と似ていますが、よりシンプルなインターフェースを提供します。
import time
timestamp = 1678886400.0
local_time = time.fromtimestamp(timestamp)
print(local_time)
出力は、time.localtime()関数と同様です。
例:タイムスタンプから日付時刻への変換
UNIXタイムスタンプをYYYY-MM-DD HH:MM:SS形式の日付時刻文字列に変換する例です。
import time
timestamp = 1678886400
formatted_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(timestamp))
print(formatted_time)
実行結果は'2024-03-15 10:00:00'となります。
例:日付時刻からタイムスタンプへの変換
YYYY-MM-DD HH:MM:SS形式の日付時刻文字列をUNIXタイムスタンプに変換する例です。
import time
date_string = '2024-03-15 10:00:00'
time_struct = time.strptime(date_string, '%Y-%m-%d %H:%M:%S')
timestamp = int(time.mktime(time_struct))
print(timestamp)
実行結果は1678886400となります。
タイムゾーンの考慮
上記関数は、ローカルタイムゾーンを使用します。UTCなどの特定のタイムゾーンを使用する必要がある場合は、`datetime`モジュールと`pytz`モジュールなどのライブラリを使用することを検討してください。
関連記事
- Pythonで現在の日付・時刻を取得(datetime.datetime.now, datetime.date.today)
- Pythonで特定の日付・時刻を作成(datetime.datetime, datetime.date, datetime.time)
- Pythonで日付・時刻の加算・減算(timedelta)
- Pythonで日付・時刻のフォーマット変換(strftime, strptime)
- Pythonでタイムゾーンを設定(pytz, zoneinfo (Python 3.9以降))
- Pythonで特定の日付や曜日を計算
- Pythonで日付・時刻をISO 8601形式に変換(isoformat)