PYTHON MEBY

Pythonで日付・時刻のフォーマット変換(strftime, strptime)

この記事では、Pythonのstrftimeとstrptime関数を使用して日付と時刻のフォーマットを変換する方法を説明します。様々なフォーマット指定子と、タイムゾーンの扱いについても解説します。

目次

strftime関数:日付時刻オブジェクトから文字列への変換

strftime関数は、日付時刻オブジェクトを指定したフォーマットの文字列に変換します。

import datetime

date_obj = datetime.datetime(2024, 3, 15, 10, 30, 45)
formatted_date = date_obj.strftime("%Y年%m月%d日 %H時%M分%S秒")
print(formatted_date)  # 出力:2024年03月15日 10時30分45秒

datetime.datetimeオブジェクトのstrftimeメソッドを使用します。フォーマット文字列は、%Y、%m、%dなど様々な指定子を使用できます。

import datetime

date_obj = datetime.datetime(2024, 3, 15, 10, 30, 45)
formatted_date = date_obj.strftime("%A, %B %d, %Y")
print(formatted_date) #出力:Friday, March 15, 2024

フォーマット指定子の詳細は、Pythonドキュメントを参照ください。

strptime関数:文字列から日付時刻オブジェクトへの変換

strptime関数は、指定したフォーマットの文字列を日付時刻オブジェクトに変換します。

import datetime

date_string = "2024年03月15日 10時30分45秒"
date_obj = datetime.datetime.strptime(date_string, "%Y年%m月%d日 %H時%M分%S秒")
print(date_obj)  # 出力:2024-03-15 10:30:45

strftime関数と同様に、フォーマット文字列にフォーマット指定子を使用します。文字列のフォーマットと指定子のフォーマットが一致している必要があります。

import datetime

date_string = "Friday, March 15, 2024"
date_obj = datetime.datetime.strptime(date_string, "%A, %B %d, %Y")
print(date_obj) #出力:2024-03-15 00:00:00

フォーマット指定子

strftimeとstrptimeで使用できる主なフォーマット指定子を以下に示します。

タイムゾーンの扱い

タイムゾーンを扱うには、pytzモジュールを使用します。

import datetime
import pytz

# JST(日本標準時)を設定
jst = pytz.timezone('Asia/Tokyo')

# JSTで現在時刻を取得
now_jst = jst.localize(datetime.datetime.now())

# フォーマットして出力
print(now_jst.strftime('%Y-%m-%d %H:%M:%S %Z%z'))

エラーハンドリング

フォーマット文字列と日付文字列のフォーマットが合わない場合、ValueErrorが発生します。

import datetime

try:
    date_string = "2024/03/15 10:30:45"
    date_obj = datetime.datetime.strptime(date_string, "%Y年%m月%d日 %H時%M分%S秒")
except ValueError as e:
    print(f"エラーが発生しました: {e}")

実践例

日付・時刻のフォーマット変換を必要とする場面は様々です。例えば、ファイル名に日付を含めたり、ログファイルに日付時刻を記録したりする際に使用します。

import datetime
import os

now = datetime.datetime.now()
log_filename = now.strftime('%Y%m%d_%H%M%S.log')

# ログファイルを作成
with open(os.path.join('./logs', log_filename), 'w') as f:
    f.write('ログメッセージ')
    

関連記事