カテゴリ: Python 更新日: 2026/01/14

Pythonで過去の日付を取得する方法(timedeltaのマイナス活用)

Pythonで過去の日付を取得する方法(timedelta のマイナス活用)
Pythonで過去の日付を取得する方法(timedelta のマイナス活用)

先生と生徒の会話形式で理解しよう

生徒

「Pythonで昨日や一週間前の日付を自動で取得したいです。どうすればいいですか?」

先生

「datetimeモジュールとtimedeltaを使うと簡単に取得できます。timedeltaに負の値を渡すことで過去の日付を得られます。」

生徒

「タイムデルタって何ですか?難しそうです。」

先生

「timedeltaは時間の差を表す道具です。例えば、'3日間'や'2時間'のように時間の長さを扱います。ここではマイナスを使って'過去に戻る'イメージで使います。」

1. 基本の考え方

1. 基本の考え方
1. 基本の考え方

Pythonで日時を扱うには標準ライブラリのdatetimeを使います。現在の日時を取得してから、timedeltaで日数や秒数を引けば過去の日付が得られます。初心者の方向けに、まずは「今」を基準に考えると分かりやすいです。

2. 基本サンプルコード

2. 基本サンプルコード
2. 基本サンプルコード

from datetime import datetime, timedelta

# 現在の日時を取得
now = datetime.now()
print("現在の日時:", now)

# 1日前(昨日)
yesterday = now + timedelta(days=-1)
print("昨日の日時:", yesterday)

# 7日前(1週間前)
one_week_ago = now + timedelta(days=-7)
print("1週間前の日時:", one_week_ago)

# 30秒前
thirty_seconds_ago = now + timedelta(seconds=-30)
print("30秒前の日時:", thirty_seconds_ago)

(ここに出力結果)

3. 日付だけを扱いたいとき

3. 日付だけを扱いたいとき
3. 日付だけを扱いたいとき

時間部分は不要で日付だけが欲しい場合はdate()メソッドを使います。datetime.date()とは別物なので注意してください。


from datetime import date, timedelta

today = date.today()
print("今日の日付:", today)

# 10日前の日付
ten_days_ago = today + timedelta(days=-10)
print("10日前の日付:", ten_days_ago)

4. よくある使い方と注意点

4. よくある使い方と注意点
4. よくある使い方と注意点
  • キーワード引数でdays, seconds, minutes, hours, weeksが使えます。
  • タイムゾーンを扱うときはdatetime.now()の代わりにdatetime.now(tz=...)を使うか、pytzzoneinfoを検討してください。
  • 負の値を渡すことで過去に戻れます。直感的には「now - timedelta(...)」と同じ動作になりますが、例では「now + timedelta(days=-n)」の形でもOKです。

5. 実用例:ログの古いデータを削除する基準日を作る

5. 実用例:ログの古いデータを削除する基準日を作る
5. 実用例:ログの古いデータを削除する基準日を作る

例えばログを30日より古いものを削除したいとき、基準日を計算して比較することで自動化できます。


from datetime import datetime, timedelta

now = datetime.now()
threshold = now + timedelta(days=-30)  # 30日前
# ログの日付と比較して削除するか判断するイメージ
# if log_date < threshold:
#     delete_log(log)

6. よくある質問(FAQ)

6. よくある質問(FAQ)
6. よくある質問(FAQ)

Q: 「timedeltaにマイナスは危険じゃないですか?」
A: 危険ではありません。timedeltaは時間の差を表すだけなので、マイナス値も正しく動作します。むしろ過去を表す用途で便利です。

Q: 「夏時間やタイムゾーンで日付がずれることはありますか?」
A: はい。夏時間やタイムゾーンを扱う場合は注意が必要です。時間を厳密に扱うならタイムゾーン対応の日時を使いましょう。

7. まとめではなく補足(用語解説)

7. まとめではなく補足(用語解説)
7. まとめではなく補足(用語解説)

datetime:日付と時間を表すデータ型。
date:日付だけを表すデータ型。
timedelta:日付や時間の差を表すオブジェクト。正の値は未来、負の値は過去を表します。

カテゴリの一覧へ
新着記事
New1
Python
Pythonの文字列から一部を抽出する方法!スライスを使った基本的な切り出し方
New2
Flask
Flaskアプリのセキュリティ対策まとめ!初心者向けに基本をやさしく解説
New3
Flask
FlaskでCookieを安全に使う方法!HttpOnly・Secureフラグの使い方を徹底解説
New4
Flask
Flaskで外部APIと連携する方法!requestsライブラリの使い方を初心者向けに解説
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.2
Java&Spring記事人気No2
Python
Pythonでトランザクション処理を実装する方法を完全解説!commit・rollbackで安全なSQL操作
No.3
Java&Spring記事人気No3
Python
Pythonで仮想環境(venv)を作る方法!初心者向けに環境構築をステップ解説
No.4
Java&Spring記事人気No4
Flask
Flaskとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
No.5
Java&Spring記事人気No5
Flask
Flaskで開発中にデータベースを初期化する方法!初心者でもわかる便利なTips
No.6
Java&Spring記事人気No6
Python
Pythonの文字列から一部を抽出する方法!スライスを使った基本的な切り出し方
No.7
Java&Spring記事人気No7
Flask
Flask‑RESTfulでREST APIを構築する手順まとめ!初心者向けにやさしく解説
No.8
Java&Spring記事人気No8
Flask
FlaskのSQLAlchemyでフィルタリング検索!filter, filter_byの使い方完全ガイド