Pythonで日付時刻を自由自在に!datetimeの使い方と注意点まとめ

2025年4月25日金曜日

Python

Pythonのdatetimeの使い方、マスターしてみませんか? 

プログラミングをしていると、現在時刻を取得したり、日付を計算したりする必要って結構出てきますよね。でも、いざやろうとすると「あれ、どうやるんだっけ?」となりがち…。

この記事では、Pythonで日付や時刻をバッチリ扱えるようになる`datetime`モジュールについて、基本からちょっと応用的な使い方、そして「あちゃー!」となりがちな落とし穴まで、しっかり解説していきます。

コードもたくさん載せているので、実際に手を動かしながら学べますよ。

この記事で学べること

  • 現在の日付や時刻をサクッと取得できる
  • 好きな日付や時刻のデータを作れる
  • 日付や時刻を見やすい形(フォーマット)に変えられる
  • 文字列の日付データをプログラムで扱える形に変換できる
  • 「〇日後」や「〇時間前」みたいな日付計算ができる
  • タイムゾーンやよくあるエラーについても知れる

Pythonのdatetimeとは?日付と時刻を扱う基本を解説

まず、「datetimeって何ぞや?」というところから始めましょう。

Pythonには、日付や時刻に関する操作をするための機能が標準で組み込まれていて、それが`datetime`モジュールなんです。インストール不要で、Pythonが入っていればすぐに使えます。

じゃあ、なんで日付や時刻をプログラムで扱う必要があるんでしょう? 例えば、こんな場面を想像してみてください。

  • ブログ記事の投稿日時を表示したい
  • Webサービスのユーザー登録日時を記録しておきたい
  • ログファイルに、いつそのログが出力されたかのタイムスタンプを残したい
  • データの有効期限をチェックしたい
  • ファイルのバックアップ名に日付を入れたい

ね、結構ありますよね!

`datetime`モジュールの中には、主に以下の4つの部品(クラスといいます)があって、これらを使い分けて日付や時刻を扱います。

  • date 日付(年、月、日)だけを扱う
  • time 時刻(時、分、秒、マイクロ秒)だけを扱う
  • datetime 日付と時刻の両方を扱う
  • timedelta 二つの日時の間の「期間」や「時間差」を扱う

今回は、これらをどうやって使っていくのか、順番に見ていきましょう!

datetimeのメリットと活用シーン

「まあ、便利そうなのはわかったけど、わざわざ学ぶほど?」と思うかもしれません。

でも、`datetime`を使いこなせると、プログラミングがぐっと楽になるし、できることの幅も広がりますよ!

例えば、こんなメリットがあります。

  • 日付や時刻の計算(〇日後、〇日前、差分など)が簡単にできる
  • ログやデータに正確なタイムスタンプを残せる
  • 日付や時刻の比較(どっちが新しいか古いか)が楽になる
  • 手作業でやっていた日付関連の処理を自動化できる
  • Webアプリやデータ分析など、色々な分野で応用できる

具体的な活用シーンとしては、

  • Web開発
    記事の投稿日時、ユーザーの最終ログイン時刻の表示・記録
  • データ分析
    時系列データの処理、特定期間のデータ抽出
  • システム管理
    ログのタイムスタンプ、定期的なバッチ処理の実行時刻管理
  • ファイル操作
    バックアップファイル名への日付付与
  • 業務アプリ
    予約システムの期間計算、タスクの期限管理

などなど、本当に様々です。

基本的な使い方さえ押さえておけば、色々な場面で「あ、datetime使えば楽じゃん!」と思えるはず。ぜひ、あなたのスキルセットに加えましょう!

datetimeの基本的な使い方 - 現在日時の取得

では、さっそく`datetime`を使ってみましょう!

一番よく使うのは、たぶん「今の時間」を取得する処理です。これはとっても簡単。

まず、`datetime`モジュールを使えるように、プログラムの最初に`import datetime`と書きます。

import datetime

# 現在の日付と時刻を取得
now = datetime.datetime.now()
print(now)

# 今日の日付だけを取得
today = datetime.date.today()
print(today)

表示結果

2025-04-25 18:10:45.123456  # これは実行するタイミングで変わります
2025-04-25              # こちらも実行日で変わります

ね、これだけです!

`datetime.datetime.now()` で、実行した瞬間の日付と時刻(マイクロ秒まで)が入った`datetime`オブジェクトが手に入ります。

`datetime.date.today()` だと、今日の日付だけが入った`date`オブジェクトが取得できます。

まずはこれを実行して、今の時間が表示されるのを確認してみてください!

特定の日時を指定してdatetimeオブジェクトを作成する方法

「今の時間」だけじゃなく、「特定の日時」を表すデータを作りたい時もありますよね。例えば、「2025年1月1日の午前9時」とか。

そんな時は、`datetime`や`date`, `time`クラスの出番です。これらは、年、月、日、時、分、秒などを指定して、その日時を表すオブジェクトを作ってくれます。

import datetime

# 特定の日付と時刻を指定してdatetimeオブジェクトを作成
dt = datetime.datetime(2025, 1, 1, 9, 30, 0) # 2025年1月1日 9時30分0秒
print(dt)

# 特定の日付を指定してdateオブジェクトを作成
d = datetime.date(2024, 12, 25) # 2024年12月25日
print(d)

# 特定の時刻を指定してtimeオブジェクトを作成
t = datetime.time(15, 0, 0) # 15時0分0秒
print(t)

表示結果

2025-01-01 09:30:00
2024-12-25
15:00:00

`datetime.datetime(年, 月, 日, 時, 分, 秒)` のように、引数でそれぞれの値を指定します。

年は必須ですが、時、分、秒は省略可能で、省略すると0になります。(例:`datetime.datetime(2025, 1, 1)` は `2025-01-01 00:00:00` と同じ)
`date`クラスは年・月・日を、`time`クラスは時・分・秒を指定します。

これで、プログラムの中で好きな日時データを扱えるようになりました!

datetimeオブジェクトから年月日時分秒を取得する

先ほど作った`datetime`オブジェクトや`date`オブジェクト、`time`オブジェクトから、「年だけ」「月だけ」「時だけ」みたいに、特定の部分だけを取り出したい時があります。

これも簡単! オブジェクトが持っている「属性」という値にアクセスするだけです。

import datetime

# 例として現在日時を取得
now = datetime.datetime.now()
print(f"現在日時: {now}")

# 各要素にアクセス
print(f"年: {now.year}")
print(f"月: {now.month}")
print(f"日: {now.day}")
print(f"時: {now.hour}")
print(f"分: {now.minute}")
print(f"秒: {now.second}")
print(f"マイクロ秒: {now.microsecond}")

# 曜日も取得できる (0が月曜日, 6が日曜日)
print(f"曜日(番号): {now.weekday()}")
# 曜日(ISO準拠 1が月曜日, 7が日曜日)
print(f"曜日(ISO): {now.isoweekday()}")

表示結果 (例)

現在日時: 2025-04-25 18:10:45.123456
年: 2025
月: 4
日: 25
時: 18
分: 10
秒: 45
マイクロ秒: 123456
曜日(番号): 4  # 金曜日
曜日(ISO): 5 # 金曜日

このように、`.year` や `.month` のようにドット(`.`)で繋げて書くと、それぞれの値を取得できます。`date`オブジェクトなら年、月、日、曜日が、`time`オブジェクトなら時、分、秒、マイクロ秒が取得可能です。

「特定の月のデータだけ処理したい」とか「午前中のログだけ集計したい」なんて時に便利ですよ。

datetimeで見やすい形式に変換 - strftimeの使い方

プログラムで`datetime`オブジェクトをそのまま表示すると、`2025-04-25 18:10:45.123456` のような形式になります。

これはこれで正確ですが、例えばWebページに表示するなら「2025年4月25日 18時10分」のように、もっと分かりやすい形にしたいですよね。

そんな時に使うのが `strftime()` メソッドです。これは `datetime`オブジェクトを、指定した書式(フォーマット)の文字列に変換してくれます。

import datetime

now = datetime.datetime.now()
print(f"元のdatetimeオブジェクト: {now}")

# よく使う書式に変換してみる
# YYYY/MM/DD HH:MM:SS 形式
format_a = now.strftime("%Y/%m/%d %H:%M:%S")
print(f"フォーマットA: {format_a}")

# YYYY年MM月DD日 形式 (日本語)
format_b = now.strftime("%Y年%m月%d日")
print(f"フォーマットB: {format_b}")

# MM/DD/YY hh:mm AM/PM 形式 (12時間表記)
format_c = now.strftime("%m/%d/%y %I:%M %p")
print(f"フォーマットC: {format_c}")

# 曜日を含める (%A: フルネーム, %a: 短縮形)
format_d = now.strftime("%Y年%m月%d日(%a)") # 短縮形
print(f"フォーマットD: {format_d}")

表示結果 (例)

元のdatetimeオブジェクト: 2025-04-25 18:10:45.123456
フォーマットA: 2025/04/25 18:10:45
フォーマットB: 2025年04月25日
フォーマットC: 04/25/25 06:10 PM
フォーマットD: 2025年04月25日(Fri)

`strftime()` の引数に、`%Y` や `%m` といった特殊な記号(書式コード)を組み合わせた文字列を渡します。

すると、その書式コードが対応する値(`%Y`なら4桁の年、`%m`なら2桁の月)に置き換えられた文字列が返ってきます。

どんな書式コードがあるかは、次の項目で見てみましょう。

strftimeの主要な書式コード一覧とサンプル

`strftime`で使える書式コードはたくさんありますが、よく使うものをいくつか紹介しますね。

  • `%Y` - 年(4桁表示、例 2025)
  • `%y` - 年(下2桁表示、例 25)
  • `%m` - 月(2桁表示、0埋めあり、例 01, 04, 12)
  • `%d` - 日(2桁表示、0埋めあり、例 01, 05, 25)
  • `%H` - 時(24時間表記、2桁表示、0埋めあり、例 00, 09, 18)
  • `%I` - 時(12時間表記、2桁表示、0埋めあり、例 01, 09, 12)
  • `%p` - 午前/午後(AM または PM)
  • `%M` - 分(2桁表示、0埋めあり、例 00, 05, 30)
  • `%S` - 秒(2桁表示、0埋めあり、例 00, 09, 59)
  • `%f` - マイクロ秒(6桁表示、0埋めあり)
  • `%A` - 曜日名(フルネーム、例 Friday)
  • `%a` - 曜日名(短縮形、例 Fri)
  • `%B` - 月名(フルネーム、例 April)
  • `%b` - 月名(短縮形、例 Apr)
  • `%w` - 曜日番号(日曜日が0、土曜日が6)

サンプルコード

import datetime

dt = datetime.datetime(2025, 4, 5, 14, 3, 8) # 2025年4月5日(土) 14:03:08

# 例1: YYYY-MM-DD
print(dt.strftime("%Y-%m-%d"))

# 例2: YY/MM/DD hh:mm:ss (12h AM/PM)
print(dt.strftime("%y/%m/%d %I:%M:%S %p"))

# 例3: Weekday, Month DD, YYYY
print(dt.strftime("%A, %B %d, %Y"))

実行結果

2025-04-05
25/04/05 02:03:08 PM
Saturday, April 05, 2025

これらを組み合わせれば、自由自在に日付時刻の表示形式をカスタマイズできます。表示したい形式に合わせて、書式コードを組み合わせてみてくださいね。

文字列をdatetimeオブジェクトに変換 - strptimeの使い方

今度は逆のパターンです。

ファイルから読み込んだデータや、ユーザーが入力したデータが、「2025/04/25」や「2025-01-01 09:30:00」のような文字列になっている場合があります。これをプログラムで日付として扱ったり、計算したりするには、`datetime`オブジェクトに変換する必要があります。

そこで使うのが `strptime()` 関数です。これは、特定の書式の文字列を、それに対応する`datetime`オブジェクトに変換してくれます。

import datetime

date_string_a = "2025/04/25 18:30:00"
date_string_b = "2024-12-25"

# 文字列の書式に合わせて、strptimeで変換
# 書式: YYYY/MM/DD HH:MM:SS
datetime_a = datetime.datetime.strptime(date_string_a, "%Y/%m/%d %H:%M:%S")
print(f"変換結果A: {datetime_a}")
print(f"型A: {type(datetime_a)}")

# 書式: YYYY-MM-DD
datetime_b = datetime.datetime.strptime(date_string_b, "%Y-%m-%d")
print(f"変換結果B: {datetime_b}")
print(f"型B: {type(datetime_b)}")

# --- 注意: 書式が違うとエラーになる例 ---
try:
  # date_string_a ("2025/04/25 18:30:00") を YYYY-MM-DD の書式で変換しようとする
  error_dt = datetime.datetime.strptime(date_string_a, "%Y-%m-%d")
except ValueError as e:
  print(f"\nエラー発生!: {e}")

表示結果

変換結果A: 2025-04-25 18:30:00
型A: <class 'datetime.datetime'>
変換結果B: 2024-12-25 00:00:00
型B: <class 'datetime.datetime'>

エラー発生!: time data '2025/04/25 18:30:00' does not match format '%Y-%m-%d'

`datetime.datetime.strptime(変換したい文字列, 文字列の書式)` のように使います。

ポイントは、第二引数で指定する書式コードが、第一引数の文字列の形式と完全に一致している必要があることです。上のエラー例のように、スラッシュ区切り(`/`)の文字列なのに、ハイフン区切り(`-`)の書式コードを指定したりすると、`ValueError`というエラーが発生します。

`strftime`が「オブジェクト → 文字列」なら、`strptime`は「文字列 → オブジェクト」と覚えておきましょう!

日付や時刻の計算を自在に - timedeltaの使い方

「今日から1週間後の日付は?」
「イベント開始まであと何日?」
「処理にかかった時間は?」

プログラムでは、こんな風に日付や時刻の足し算・引き算をしたいことがよくあります。
そんな時に大活躍するのが `timedelta` オブジェクトです!

`timedelta`は、二つの日時の「差」や「期間」を表すためのものです。これを使うと、`datetime`オブジェクトに特定の期間を足したり、引いたりできます。

import datetime

now = datetime.datetime.now()
print(f"現在日時: {now}")

# --- timedeltaオブジェクトを作成 ---
# 1日を表すtimedelta
one_day = datetime.timedelta(days=1)
print(f"1日のtimedelta: {one_day}")

# 2週間 (14日) を表すtimedelta
two_weeks = datetime.timedelta(weeks=2)
print(f"2週間のtimedelta: {two_weeks}")

# 3時間30分を表すtimedelta
three_half_hours = datetime.timedelta(hours=3, minutes=30)
print(f"3時間半のtimedelta: {three_half_hours}")


# --- datetimeオブジェクトとの計算 ---
# 明日の日付
tomorrow = now + one_day
print(f"明日: {tomorrow}")

# 2週間前の日付
two_weeks_ago = now - two_weeks
print(f"2週間前: {two_weeks_ago}")

# 3時間半後の日時
later = now + three_half_hours
print(f"3時間半後: {later}")


# --- datetimeオブジェクト同士の引き算 ---
# 例: 特定の日時 (未来)
future_event = datetime.datetime(2025, 12, 31, 0, 0, 0)

# 現在日時との差 (期間) を計算
time_diff = future_event - now
print(f"未来のイベントまで: {time_diff}")
print(f"未来のイベントまでの日数: {time_diff.days}")

表示結果 (例)

現在日時: 2025-04-25 18:10:45.123456
1日のtimedelta: 1 day, 0:00:00
2週間のtimedelta: 14 days, 0:00:00
3時間半のtimedelta: 3:30:00
明日: 2025-04-26 18:10:45.123456
2週間前: 2025-04-11 18:10:45.123456
3時間半後: 2025-04-25 21:40:45.123456
未来のイベントまで: 249 days, 5:49:14.876544
未来のイベントまでの日数: 249

`datetime.timedelta()` に、`days=日数`, `weeks=週数`, `hours=時間`, `minutes=分`, `seconds=秒` などを指定して、期間を表すオブジェクトを作ります。

そして、`datetime`オブジェクトと`timedelta`オブジェクトを `+` や `-` で計算できます。

また、`datetime`オブジェクト同士を引き算すると、その間の期間を表す`timedelta`オブジェクトが返ってきます。便利ですね!

timedeltaを使った日付計算の具体例

もう少し具体的な計算例を見てみましょう。

例1:今日から100日後の日付を求める

import datetime

today = datetime.date.today()
print(f"今日: {today}")

# 100日を表すtimedelta
hundred_days = datetime.timedelta(days=100)

# 100日後を計算
after_100_days = today + hundred_days
print(f"100日後: {after_100_days}")

実行結果 (例)

今日: 2025-04-25
100日後: 2025-08-03

例2:二つの日時の間の時間差(分)を計算する

import datetime

start_time = datetime.datetime(2025, 4, 25, 10, 0, 0)
end_time = datetime.datetime(2025, 4, 25, 11, 45, 30)
print(f"開始時刻: {start_time}")
print(f"終了時刻: {end_time}")

# 時間差を計算
time_difference = end_time - start_time
print(f"時間差 (timedelta): {time_difference}")

# 時間差を秒で取得し、分に変換
total_seconds = time_difference.total_seconds()
minutes = total_seconds / 60
print(f"時間差(分): {minutes}")

実行結果

開始時刻: 2025-04-25 10:00:00
終了時刻: 2025-04-25 11:45:30
時間差 (timedelta): 1:45:30
時間差(分): 105.5

ポイントは、`timedelta`オブジェクトの`.total_seconds()`メソッドを使うと、期間全体の秒数を取得できることです。これを使えば、時間や分単位での差も簡単に計算できますね。

タイムゾーンを扱う際のdatetimeの注意点

さて、少しややこしい話になりますが、タイムゾーン(時間帯)についても触れておきましょう。

日本にいるとあまり意識しませんが、世界には色々な時間帯がありますよね。例えば、東京が午前9時のとき、ロンドンは午前0時です。

Pythonの`datetime`オブジェクトには、大きく分けて2種類あります。

  • Naive (ナイーブ) タイムゾーン情報を持っていない。単純に「何年何月何日何時何分」という情報だけ。今まで扱ってきたのは主にこれ。
  • Aware (アウェア) タイムゾーン情報(「これはUTC+9:00の時間だよ」とか)を持っている。

普通に日本国内だけで使うプログラムならNaiveでも問題ないことが多いですが、海外のサーバーと連携したり、世界中のユーザーが使うサービスを作ったりする場合は、タイムゾーンを意識しないと思わぬ時刻のズレが発生することがあります。

Python 3.9以降であれば、標準ライブラリの`zoneinfo`を使ってタイムゾーンを扱えます。

書き方 (Python 3.9+)

import datetime
from zoneinfo import ZoneInfo # Python 3.9以上で利用可能

# Naiveな現在時刻 (タイムゾーン情報なし)
naive_now = datetime.datetime.now()
print(f"Naiveな現在時刻: {naive_now}")

# Awareな現在時刻 (東京タイムゾーン)
tokyo_tz = ZoneInfo("Asia/Tokyo")
aware_now_tokyo = datetime.datetime.now(tokyo_tz)
print(f"Awareな東京時刻: {aware_now_tokyo}")

# Awareな現在時刻 (ニューヨークタイムゾーン)
ny_tz = ZoneInfo("America/New_York")
aware_now_ny = datetime.datetime.now(ny_tz)
print(f"AwareなNY時刻: {aware_now_ny}")

# タイムゾーン間の変換
utc_now = aware_now_tokyo.astimezone(ZoneInfo("UTC"))
print(f"UTC時刻に変換: {utc_now}")

ソースコードの表示結果 (例)

Naiveな現在時刻: 2025-04-25 18:10:45.123456
Awareな東京時刻: 2025-04-25 18:10:45.123456+09:00
AwareなNY時刻: 2025-04-25 05:10:45.123456-04:00
UTC時刻に変換: 2025-04-25 09:10:45.123456+00:00

Awareなオブジェクトには、末尾に `+09:00` のようなUTC(協定世界時)からの差分が付いていますね。

Python 3.8以前の場合は、`pytz`という外部ライブラリを使うのが一般的です。

タイムゾーンは奥が深いので、ここでは「タイムゾーンってものがあって、意識しないとズレることがあるんだな」ということを覚えておけばOKです!必要になったら詳しく調べてみてください。

初心者が陥りがちなdatetimeのエラーと対処法

`datetime`を使い始めた頃に、よく遭遇するかもしれないエラーとその対処法をいくつか紹介します。

「あ、これ見たことある!」ってなっても慌てないように、頭の片隅に置いておきましょう。

【エラー1】TypeError: can't compare offset-naive and offset-aware datetimes

  • 原因 タイムゾーン情報を持つAwareな`datetime`と、持たないNaiveな`datetime`を直接比較しようとした。
  • 対処法 比較する前に、どちらかに揃える必要があります。例えば、Naiveな方にタイムゾーン情報を付加するか、Awareな方からタイムゾーン情報を除去する(`.replace(tzinfo=None)`)などの方法があります。どちらに揃えるかは状況によりますが、Awareに揃える方が安全な場合が多いです。
# エラー例 (コメントアウトしています)
# import datetime
# from zoneinfo import ZoneInfo
# naive_dt = datetime.datetime(2025, 1, 1)
# aware_dt = datetime.datetime(2025, 1, 1, tzinfo=ZoneInfo("Asia/Tokyo"))
# print(naive_dt > aware_dt) # これがTypeErrorになる

# 対処例: NaiveをAwareに変換してから比較
# aware_naive_dt = naive_dt.replace(tzinfo=ZoneInfo("Asia/Tokyo"))
# print(aware_naive_dt > aware_dt) 

【エラー2】ValueError: time data '...' does not match format '...'

  • 原因 `strptime()` で文字列を`datetime`オブジェクトに変換する際に、指定した書式と実際の文字列の形式が一致していない。
  • 対処法 `strptime()`の第二引数で指定している書式コードが、第一引数の文字列の形式と完全に合っているか、よーく確認しましょう。スラッシュ(`/`)とハイフン(`-`)、大文字と小文字、年の桁数(`%Y`か`%y`か)などが間違っていないかチェック!
# エラー例 (コメントアウトしています)
# import datetime
# date_str = "2025/04/25" # スラッシュ区切り
# dt = datetime.datetime.strptime(date_str, "%Y-%m-%d") # ハイフン区切りの書式を指定している

# 対処例: 書式を合わせる
# dt_correct = datetime.datetime.strptime(date_str, "%Y/%m/%d")
# print(dt_correct) 

【エラー3】TypeError: unsupported operand type(s) for -: 'datetime.datetime' and 'str'

  • 原因 `datetime`オブジェクトと文字列を直接計算しようとした(例えば引き算)。
  • 対処法 計算する前に、文字列の方を`strptime()`を使って`datetime`オブジェクトに変換しましょう。`datetime`オブジェクトは、同じ`datetime`オブジェクトか`timedelta`オブジェクトとしか計算できません
# エラー例 (コメントアウトしています)
# import datetime
# now = datetime.datetime.now()
# date_str = "2025-01-01"
# diff = now - date_str # datetimeから文字列は引けない

# 対処例: 文字列をdatetimeに変換してから計算
# past_dt = datetime.datetime.strptime(date_str, "%Y-%m-%d")
# diff_correct = now - past_dt
# print(diff_correct)

エラーが出ても焦らず、メッセージをよく読んでみてください。何が原因かヒントが書かれていることが多いですよ!

Python datetimeの実践的な活用例(簡単)

最後に、これまで学んだことを使って、簡単なプログラム例を2つほど見てみましょう。

例1:ファイル名に現在日時を付けてログファイルを作成する

プログラムの実行ログなどをファイルに保存する際、ファイル名に日時を入れておくと、いつのログか分かりやすくなります。

import datetime

# 現在日時を取得し、ファイル名に使える形式の文字列に変換
# 例: log_20250425_181045.txt
now = datetime.datetime.now()
timestamp = now.strftime("%Y%m%d_%H%M%S")
filename = f"log_{timestamp}.txt"

print(f"作成するファイル名: {filename}")

# ファイルを作成して簡単なログを書き込む (ファイル操作の詳細は省略)
try:
  with open(filename, "w", encoding="utf-8") as f:
    f.write(f"ログ記録開始: {now.strftime('%Y-%m-%d %H:%M:%S')}\n")
    f.write("処理Aを実行しました。\n")
    f.write("処理Bを実行しました。\n")
  print("ログファイルを書き込みました。")
except Exception as e:
  print(f"ファイル書き込みエラー: {e}")

例2:特定の日付からの経過日数を表示する

例えば、イベント開催日や記念日など、特定の日付から今日まで何日経ったかを計算します。

import datetime

# 特定の日付 (例: 2024年の元旦)
start_date = datetime.date(2024, 1, 1)
print(f"開始日: {start_date}")

# 今日の日付
today = datetime.date.today()
print(f"今日: {today}")

# 経過期間を計算
elapsed_time = today - start_date

# 経過日数を表示
print(f"{start_date} から今日まで {elapsed_time.days} 日が経過しました。")

実行結果 (例)

開始日: 2024-01-01
今日: 2025-04-25
2024-01-01 から今日まで 480 日が経過しました。

こんな風に、`datetime`を組み合わせることで、実用的な処理が書けるようになります!

【まとめ】Pythonのdatetimeの使い方をマスターして開発効率を上げよう

今回はPythonの`datetime`モジュールについて、基本的な使い方からちょっとした応用、注意点まで一通り見てきました。

最後に、この記事で学んだ重要なポイントを振り返っておきましょう。

  • `datetime`モジュールで日付や時刻を扱える!(`date`, `time`, `datetime`, `timedelta`クラス)
  • `datetime.now()`, `date.today()` で現在日時・日付を取得できる。
  • `datetime(年, 月, 日, ...)` で特定の日時オブジェクトを作れる。
  • `.year`, `.month`, `.hour` などで各要素にアクセスできる。
  • `strftime("書式")` でオブジェクトを好きな形式の文字列に変換!
  • `strptime("文字列", "書式")` で文字列をオブジェクトに変換!書式の一致が超大事!
  • `timedelta` を使えば日付や時刻の足し算・引き算が簡単にできる!
  • タイムゾーン (Naive/Aware) という考え方があることを知っておこう!
  • よくあるエラー (`TypeError`, `ValueError`) の原因と対処法を知っておくと安心!

`datetime`は、Pythonでプログラミングをする上で避けては通れない、とても便利な機能です。最初は少し戸惑うかもしれませんが、実際にコードを書いて動かしてみるのが一番の近道!

この記事を参考に、ぜひあなたのプログラムにも`datetime`を取り入れて、日付や時刻の操作を自由自在に操ってみてください。きっと開発がもっとスムーズに、そして楽しくなるはずですよ!

【関連記事】 「Pythonとは?」に答える最初の一歩

このブログを検索

  • ()

自己紹介

自分の写真
リモートワークでエンジニア兼Webディレクターとして活動しています。プログラミングやAIなど、日々の業務や学びの中で得た知識や気づきをわかりやすく発信し、これからITスキルを身につけたい人にも役立つ情報をお届けします。 note → https://note.com/yurufuri X → https://x.com/mnao111

QooQ