1. はじめに|Pythonで日付や時間を扱う場面って?
Pythonを使っていると、「日付」や「時間」を扱う場面ってけっこうよく出てきます。
たとえば、こんなときに必要になります:
- 毎日決まった時間にメールを送りたい
- ログに「いつ何が起きたか」を記録したい
- 「7日後が何月何日か」を知りたい
- 日本の祝日かどうかを調べたい
こういった処理は、ゲームでも、業務アプリでも、日記アプリでも、ほんとうによく出てくるんです。
そこで登場するのが、Pythonの標準モジュールである datetime(デートタイム)モジュールです。
これは「日付や時間をかんたんに扱える便利な道具セット」みたいなもの。
しかも、Pythonではこのdatetimeを使えば、
- 今日の日付や今の時間がすぐにわかる
- 3日後、1週間前などの日時が簡単に計算できる
- タイムゾーン(日本時間、UTCなど)も扱える
といったことが、プログラムでサクッとできちゃうんです!
この章では、そんな 「日付・時間の基本操作」 を、初心者の方でもわかるようにゆっくりていねいに解説していきます。
「時間の計算なんてむずかしそう…」と思っていたあなたも大丈夫!
一緒に楽しく覚えていきましょう✨
2. datetimeモジュールの基本的な使い方
Pythonで日付や時間をあつかうときに、よく使われるのが datetime というモジュールです。
このモジュールには、3つのとても便利な道具が用意されています。
🔹 date(デート)オブジェクト = 日付だけをあつかう
「今日って何日?」や「この日が何曜日か知りたい」ってときに使います。
from datetime import date
today = date.today()
print(today) # 例: 2025-06-11
💡ポイント:
date(2025, 6, 11)のようにして、好きな日付を作ることもできます。.year,.month,.dayを使えば、年・月・日だけを取り出すこともできます。.weekday()を使うと「何曜日か」が数字でわかります(0=月曜, 6=日曜)。
🔹 time(タイム)オブジェクト = 時間だけをあつかう
今度は「朝8時」や「夜11時30分」など、時間だけをあつかいたいときに使います。
from datetime import time
t = time(8, 30, 0)
print(t) # 08:30:00
💡ポイント:
.hour,.minute,.second,.microsecondを使って、それぞれの時間の要素が取り出せます。- 時だけじゃなくて「分」や「秒」まで細かく指定できます。
🔹 datetime(デートタイム)オブジェクト = 日付+時間をあつかう
名前のとおり、「日付」と「時間」をセットで使いたいときに便利なのが datetime オブジェクト!
from datetime import datetime
now = datetime.now()
print(now) # 2025-06-11 12:34:56.789012(みたいな表示)
💡ポイント:
.year,.month,.day,.hour,.minuteなど、全部取り出せる!datetime(2025, 6, 11, 12, 0)のように、自分で日付+時間を作ることもできます。.date()を使えば、日付だけ取り出せます。

これらのオブジェクトを使いこなせるようになると、
「今日が何日か」だけでなく、「明日から7日後が何日か」「この時間に何かをする」などの便利なプログラムが書けるようになります!
3. 時間の足し算・引き算にはtimedelta
「7日後って何日?」とか「3日前はいつだった?」といった、日付の計算がしたいときに使えるのが、timedelta(タイムデルタ) というオブジェクトです!
ちょっとカタカナで難しそうな名前ですが、やってることはとってもシンプル。
「時間の差」や「日付のズレ」を表すための道具だと思ってください。
🔹 まずは使い方を覚えよう
from datetime import datetime, timedelta
today = datetime(2025, 6, 11)
plus_7_days = today + timedelta(days=7)
print(plus_7_days) # 2025-06-18 00:00:00
timedelta(days=7) と書けば、「7日間」という意味になります。
これをdatetimeに足せば、「7日後の日付」が簡単に求まります!
🔹 引き算もできる!
day1 = datetime(2025, 6, 11)
day2 = datetime(2025, 5, 25)
diff = day1 - day2
print(diff) # 17 days, 0:00:00
print(diff.days) # 17
2つのdatetimeオブジェクトを引き算すると、timedeltaが返ってきます。.daysを使えば、何日差かがすぐにわかります!
🔹 時間の差もわかる!
from datetime import datetime, timedelta
start = datetime(2025, 6, 11, 10, 0)
end = datetime(2025, 6, 11, 12, 30)
delta = end - start
print(delta.seconds) # 9000秒(2時間30分)
日付が同じでも、時間が違えば seconds で差が見られます。
🔹 いろんな単位に対応
timedeltaは、以下のようにいろんな単位を指定できます。
| 単位 | キーワード例 |
|---|---|
| 日 | days=3 |
| 秒 | seconds=1800 |
| マイクロ秒 | microseconds=500000 |
| 時間 | hours=1 |
| 分 | minutes=30 |
| 週間 | weeks=2 |
例:
after_two_weeks = datetime.now() + timedelta(weeks=2)

timedelta を使えば、「◯日後」や「何日差?」がかんたんに計算できます。
日付や時間の操作を自動化したいときには、必須の道具なのでぜひ使いこなしましょう!
4. タイムゾーンを扱うには timezone
みなさん、「世界の時間」って意識したことありますか?
日本とアメリカでは時差がありますよね。たとえば、アメリカが朝のとき、日本はもう夜だったりします。
こういった国や地域ごとの時間の違いをきちんと扱うには、「タイムゾーン(timezone)」という考え方が必要です。
Pythonでも、タイムゾーンをしっかり扱うための仕組みがちゃんと用意されています!
🔹 そもそもタイムゾーンって?
世界の基準となる時間が「UTC(協定世界時)」です。
日本は「UTCより9時間進んでいる」ので、**日本時間は「UTC+9」**と表されます。
🔹 Pythonで日本時間(JST)を使うには?
まずは、timezoneというオブジェクトを使って、日本時間のタイムゾーンを定義します。
from datetime import datetime, timezone, timedelta
# 日本時間(UTC+9)を定義
jst = timezone(timedelta(hours=+9))
# タイムゾーンつきの現在時刻
now_japan = datetime.now(jst)
print(now_japan) # 2025-06-11 13:45:00+09:00(例)
このように、datetime.now(タイムゾーン) としてあげれば、そのタイムゾーンでの現在時刻が取得できます!
🔹 タイムゾーンをあとからつけたいときは?
すでに作った日時オブジェクトに、あとからタイムゾーンをつけることもできます。
dt = datetime(2025, 6, 11, 9, 0)
dt_jst = dt.replace(tzinfo=jst)
print(dt_jst) # 2025-06-11 09:00:00+09:00
🔹 タイムゾーンを使うと何がうれしいの?
グローバルに使われるアプリやサービスでは、ユーザーのいる国に合わせて時間を表示する必要があります。
タイムゾーンを正しく設定しておけば、
- サーバーではUTCで記録
- ユーザーにはJSTで表示
ということができるんです!

タイムゾーンは、世界中で時間を正しく扱うために必要な知識です。
Pythonでは、timezoneとtimedeltaを組み合わせることで、日本時間や他の国の時間もカンタンに扱えます。
5. 日本の祝日をチェックするには jp_holidays
「この日って祝日かな?」
「ゴールデンウィークの予定、自動で判断してくれたら便利なのに…」
そんなときに使えるのが、Pythonの外部ライブラリ jp_holidays(ジェイピーホリデイズ) です!
🔹 jp_holidaysって何?
これは、日本の祝日を簡単にチェックできるライブラリです。
「この日が祝日かどうか」だけでなく、
- 祝日名を知ったり、
- その年の祝日一覧を取得したり
ということもできちゃう、かなり便利な道具です!
🔹 まずはインストールしよう
このライブラリは標準では入っていないので、インストールが必要です。
pip install jp_holidays
🔹 基本の使い方を見てみよう
import jp_holidays
from datetime import date
# この日が祝日かどうかチェック
print(jp_holidays.is_holiday(date(2025, 1, 1)))
# → True(元日)
# 祝日名を表示
print(jp_holidays.is_holiday_name(date(2025, 1, 1)))
# → '元日'
# その年の祝日一覧を取得
holidays = jp_holidays.year_holidays(2025)
for d, name in holidays:
print(f"{d} は {name} です")
🔹 どんな場面で役に立つ?
- 勤怠アプリで「この日はお休みだから出勤扱いにしない」
- スケジューラーで「祝日を自動でカレンダーに反映」
- 自動レポートで「営業日だけ処理を実行」
など、実務でもめちゃくちゃ使えます!
🔸 注意ポイント
jp_holidaysは「非公式ライブラリ」なので、以下のことに注意してください:
- 国の祝日変更(例:五輪で移動した祝日)には注意
- 定期的にライブラリをアップデートするのがおすすめです(
pip install --upgrade jp_holidays)

日本の祝日チェック、手でやるのは大変ですが…
このjp_holidaysを使えば、自動で簡単に判定&表示できます!
ちょっとしたツールから業務システムまで使えるので、知っておくとかなり便利ですよ✨
6. まとめ|日付・時間の操作を使いこなそう!
Pythonで日付や時間を扱うには、**標準モジュールのdatetime**を中心に使います。
今回紹介した内容をまとめると…
✅ date, time, datetimeで、日付・時間を自在に取り出せる
✅ timedeltaを使えば、○日前・○日後の計算がカンタン!
✅ timezoneを指定すれば、世界の時差もバッチリ管理できる
✅ 日本の祝日はjp_holidaysで自動チェックできる
こうした知識は、本格的なアプリ開発や業務自動化にもすぐ役立ちます!
最初は少しむずかしく感じるかもしれませんが、この記事のコードをコピーして、ぜひ実際に試してみてください😊
「Pythonでこんなこともできるんだ!」という体験が、きっと楽しさにつながるはずです!
あわせて読みたい
以下の記事も合わせて読むと、さらに理解が深まります👇
- 🔗 Pythonでできる自動化10選|初心者向けにやさしく解説
- 🔗 Python初心者がよく出会う「NameError」と「IndentationError」の原因と解決法まとめ
- 🔗 【初心者向け】VS CodeでAIを使う方法を解説!Copilot・チャットAI・エージェントまで完全ガイド
- 🔗 【初心者向け】FastAPIの基本の使い方をやさしく解説
よくある質問(Q&A)
- Q
datetime.now()とdate.today()の違いは? - A
datetime.now()は「日付+時刻」、date.today()は「日付だけ」を返します。
- Q
timedelta(days=30)って必ず「1か月後」になりますか? - A
なりません!30日後ですが、月によって日数は違うため「1か月後」とは限りません。月単位の計算には
relativedeltaが必要です。
- Qタイムゾーンは日本以外も設定できますか?
- A
はい、
timezone(timedelta(hours=±差)の形で、世界中のタイムゾーンを自分で作れます。







※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。
※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。