Pythonでログの出力時刻を記録したり、ファイル名に日時を含めたりする場合、datetime クラスの now() メソッドと strftime() メソッドを組み合わせるのが基本パターンです。
ここでは、現在の日時(年月日時分秒)を取得し、それを「2025-12-15 10:30:00」のような読みやすい文字列フォーマットに変換する実装方法を解説します。
目次
実装例:処理実行日時の記録
バッチ処理やスクリプトが実行されたタイミングを取得し、標準的な日時フォーマットで表示するシナリオです。
ソースコード
from datetime import datetime
# 1. 現在の日時(datetimeオブジェクト)を取得
# システムのローカル時間を取得します
current_timestamp = datetime.now()
# 2. datetimeオブジェクトを文字列に変換 (Formatting)
# strftime(フォーマット文字列) を使用
# %Y: 西暦4桁, %m: 月(0埋め), %d: 日(0埋め)
# %H: 時(24時間表記), %M: 分, %S: 秒
formatted_date = current_timestamp.strftime("%Y-%m-%d %H:%M:%S")
# 結果の出力
print(f"取得したオブジェクト: {current_timestamp}")
print(f"型: {type(current_timestamp)}")
print("-" * 40)
print(f"フォーマット変換後 : {formatted_date}")
print(f"型: {type(formatted_date)}")
実行結果
取得したオブジェクト: 2025-12-15 18:05:30.123456
型: <class 'datetime.datetime'>
----------------------------------------
フォーマット変換後 : 2025-12-15 18:05:30
型: <class 'str'>
解説
datetime.now()
datetime.now() は、プログラムが実行されているシステムの「現在時刻(ローカルタイム)」を持つ datetime オブジェクトを返します。このオブジェクトはそのままでは計算用のデータ型ですが、画面表示やファイル保存用には文字列への変換が必要です。
strftime() メソッド
strftime(String Format Time)メソッドは、指定した書式(フォーマットコード)に従って、日時オブジェクトを文字列に変換します。
よく使われる書式指定子:
| 指定子 | 意味 | 例 |
%Y | 西暦(4桁) | 2025 |
%m | 月(0埋め2桁) | 01, 12 |
%d | 日(0埋め2桁) | 05, 31 |
%H | 時(24時間表記) | 09, 23 |
%M | 分 | 00, 59 |
%S | 秒 | 05, 59 |
%A | 曜日(英語) | Sunday, Monday |
これらを組み合わせることで、"%Y/%m/%d" や "%H:%M" など、用途に合わせた自由な形式の日付文字列を作成できます。
