Pythonで時間計算を学ぼう!基本の使い方と例を解説

はじめに

Pythonは日付や時間の操作を簡単に扱える便利なライブラリを備えています。特に、datetimeモジュールを使えば、日付や時刻の計算、操作、フォーマット変換が簡単です。このブログでは、Pythonで基本的な時間計算をする方法をわかりやすく解説します!

日付と時間を扱う基本的なライブラリ:datetime

Pythonでは、datetimeモジュールを使って日付と時間を簡単に操作できます。まずは基本的な使い方を見てみましょう。

現在の日時を取得する

以下のコードで現在の日付と時間を取得できます

from datetime import datetime

# 現在の日時を取得
now = datetime.now()

# フォーマットして表示
print("現在の日時:", now)

実行結果

時刻のフォーマットを変更する

日付や時間を特定のフォーマットで表示したい場合は、strftimeを使います。
先程のコードにstrftimewメソッドを追加します。

フォーマットの例

from datetime import datetime

# 現在の日時を取得
now = datetime.now()
formatted_date = now.strftime("%Y年%m月%d日 %H:%M:%S")
print("フォーマットされた日時:", formatted_date)

実行結果

主なフォーマット指定子

  • %Y : 年(例: 2024)
  • %m : 月(例: 11)
  • %d : 日(例: 18)
  • %H : 時(24時間表記、例: 14)
  • %M : 分(例: 30)
  • %S : 秒(例: 00)

Pythonで時間差を計算してみよう

例えば、2つの日付のや時間の間隔を計算する場合、timedeltaを使います。

手動で計算する場合

Pythonのdatetimeオブジェクトは引き算演算子(-)を直接使えます。これでtimedeltaオブジェクトが返されます。

from datetime import datetime

# 日付の設定
date1 = datetime(2024, 11, 1)
date2 = datetime(2024, 11, 18)

# 日付の差を計算
difference = date2 - date1

print("日付の差:", difference.days, "日")

実行結果

timedeltaを使う場合

timedeltaを使うことで、より安全かつ簡単に計算できます。

from datetime import datetime, timedelta

# 現在の日時
now = datetime(2024, 12, 3)

# timedeltaを使用して7日後を計算
future_date = now + timedelta(days=7)

print("7日後の日時(timedelta使用):", future_date)

実行結果

現実的な応用例

タイマーを作る

簡単なタイマー機能を作ってみましょう。

import time

# カウントダウンタイマー
countdown_seconds = 5
print("タイマー開始!")

for i in range(countdown_seconds, 0, -1):  # countdown_secondsから1まで
    print(i)  # カウントダウン表示
    time.sleep(1)  # 1秒待機

print("タイマー終了!")

実行結果

1秒ごとにカウントダウンされたら成功です!

解説

  1. for i in range(countdown_seconds, 0, -1):
    • range関数を使って、指定した秒数から1までの数値を逆順で繰り返します。
    • countdown_secondsが5の場合、5, 4, 3, 2, 1が順に処理されます。
  2. time.sleep(1)
    • 1秒間待機して、次のループに進みます。
  3. 可変時間の設定
    • countdown_secondsの値を変更するだけで、タイマーの長さを簡単に変更できます。

これを使えば、簡単にカウントダウンタイマーを作成できます!さらに改良して画面をクリアするなどの工夫もできます。

まとめ

Pythonのdatetimeモジュールを使えば、日付や時間の計算が簡単にできます。この記事では基本的な機能を紹介しましたが、これらを組み合わせることで、日付管理アプリやスケジュール管理ツールを作ることもできます!

タイトルとURLをコピーしました