2025.03.18(更新日: 2025.03.18)
現在の日時から20日前の日時を生成する
はじめに
PentahoETLのPython化において、取得元のフォルダから最終更新日時が20日前のファイルのみを抽出する必要があった。
理由は、3万くらいのファイルがあり、すべて取得してしまうと処理が重くなってしまうから。
その20日という期間を日時型で生成して、ファイル取得のインスタンス生成時にコンストラクタ引数として渡す必要があった。
「20日という期間を日時型で生成」という部分について、この記事では解説していく。
作成したPythonコード
from datetime import datetime, timedelta
# 現在の日時を取得
now = datetime.now()
# 20日前の日時を計算
twenty_days_ago = now - timedelta(days=20)
print("現在の日時:", now)
print("20日前の日時:", twenty_days_ago)
実行結果

(.venv) hiroki@shibatahiroshitakanoiMac Python % /Users/hiroki/Downloads/Python/.venv/bin/python /Users/hiroki/Downloads/Python/datetime/before_20.py
現在の日時: 2025-03-18 12:03:22.847113
20日前の日時: 2025-02-26 12:03:22.847113
timedeltaとは
Pythonのdatetimeモジュールに含まれる「時間の差分を表すオブジェクト」
timedeltaを使うことで、日時の加減算(時間の経過を計算する処理)が簡単にできる。
先ほどの例では、timedelta(days=20)とすることで、20日という時間を計算に使用できる。
2025-03-18 12:03:22.847113の日時形式について
こちらは以下のフォーマットである。
YYYY-MM-DD HH:MM:SS.ssssss
フォーマット | 意味 | 2025-03-18 12:03:22.847113 |
YYYY | 年 | 2025 |
MM | 月(1桁の場合は先頭に0を含む) | 03 |
DD | 日(1桁の場合は先頭に0を含む) | 18 |
HH | 時(1桁の場合は先頭に0を含む) | 12 |
MM | 分(1桁の場合は先頭に0を含む) | 03 |
SS | 秒(1桁の場合は先頭に0を含む) | 22 |
ssssss | マイクロ秒 | 847113 |
コメントを残す