PYTHON MEBY

PythonでUNIXタイムスタンプと日付・時刻を相互に変換(timestamp, fromtimestamp)

この記事では、PythonでUNIXタイムスタンプと日付・時刻を相互に変換する方法について説明します。`time`モジュールの`time()`、`localtime()`、`strftime()`、`strptime()`、`mktime()`、`fromtimestamp()`関数を使用して、様々な変換方法を学びます。

目次

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`モジュールなどのライブラリを使用することを検討してください。

関連記事