カテゴリ: 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
Flask
FlaskのテンプレートエンジンJinja2とは?基本の書き方と使い方を解説
New2
Python
Pythonの演算子一覧と使い方!算術・比較・論理演算子の基本を解説
New3
Python
Pythonで定数を定義する方法!変更されない変数の書き方と命名ルール
New4
Flask
Flaskの開発サーバーを立ち上げる方法まとめ!run()とflaskコマンドの使い方
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
No.2
Java&Spring記事人気No2
Flask
Flaskでデータベースを使う基本!SQLAlchemyの導入方法をやさしく解説
No.3
Java&Spring記事人気No3
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.4
Java&Spring記事人気No4
Python
Pythonのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.5
Java&Spring記事人気No5
Python
Pythonでリストの要素を検索・取得する方法!index()やin演算子の活用法
No.6
Java&Spring記事人気No6
Python
Pythonのコメント活用術!初心者向けにTODO・FIXME・ドキュメンテーションコメントの書き方を完全解説
No.7
Java&Spring記事人気No7
Flask
Flaskアプリの環境変数をクラウドで安全に設定する方法!初心者のための完全ガイド
No.8
Java&Spring記事人気No8
Flask
Flaskでクラウド上のメッセージキュー(SQS/PubSub)を扱う完全ガイド!初心者向け解説