カテゴリ: 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で過去の日付を取得する方法(timedeltaのマイナス活用)
New2
Python
Pythonとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
New3
Django
DjangoのURLルーティングとは?初心者向けに仕組みと役割をやさしく解説
New4
Flask
Flask×Celeryでタスクが失敗した場合のリトライ設定を完全解説|初心者でもわかる非同期処理とタスク管理
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonで現在の日付・時刻を取得する方法(datetime.now() / today())
No.2
Java&Spring記事人気No2
Python
Pythonで定数を定義する方法!変更されない変数の書き方と命名ルールを初心者向けに解説
No.3
Java&Spring記事人気No3
Flask
Flask-Loginでユーザー認証を完全ガイド!初心者でもわかるログイン処理の作り方
No.4
Java&Spring記事人気No4
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.5
Java&Spring記事人気No5
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.6
Java&Spring記事人気No6
Python
Pythonの文字列から一部を抽出する方法!スライスを使った基本的な切り出し方
No.7
Java&Spring記事人気No7
Python
Pythonでリストを文字列に変換する方法を完全ガイド!初心者でもわかるjoinの使い方
No.8
Java&Spring記事人気No8
Django
Django settings.py の役割とよく使う設定を完全解説!初心者でもわかる基本と考え方