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('ログメッセージ')
関連記事
- Pythonで現在の日付・時刻を取得(datetime.datetime.now, datetime.date.today)
- Pythonで特定の日付・時刻を作成(datetime.datetime, datetime.date, datetime.time)
- Pythonで日付・時刻の加算・減算(timedelta)
- PythonでUNIXタイムスタンプと日付・時刻を相互に変換(timestamp, fromtimestamp)
- Pythonで日付・時刻をISO 8601形式に変換(isoformat)
- Pythonで特定の日付や曜日を計算
- Pythonでタイムゾーンを設定(pytz, zoneinfo (Python 3.9以降))