Pythonで日付・時刻を扱う方法を入門者向けに解説します。
はじめに・・
多くのアプリケーションでは、必ずと言っていいほど日付や時刻を扱う場面があります。
本記事では、Pythonのdatetimeモジュールを使った日付や時刻の操作方法について紹介します。
datetimeモジュールとは?
Pythonのdatetimeモジュールは、日付や時刻を操作することができるモジュールです。
datetimeモジュールには、日付や時刻を扱うためのクラスが用意されています。
例えば以下のようなクラスがあります。
- datetime.date: 年、月、日を扱うクラス
- datetime.time: 時、分、秒、マイクロ秒を扱うクラス
- datetime.datetime: 日付と時間を合わせて扱うクラス
- datetime.timedelta: 2つのdatetimeオブジェクト間の差を表すクラス
これらを使うことで、現在の日付を取得したり、日付の計算を行ったりすることができます。
基本的な使い方
まずはdatetimeモジュールを使って、現在の日付と時刻を取得してみましょう。
最初に、datetimeモジュールをインポートします。
from datetime import datetime
現在の日付と時刻の取得 現在の日付と時刻を取得するには、datetime.now()関数を使います。
この関数は、現在のローカルタイムゾーンに基づいた日付と時刻を返します。
from datetime import datetime
# 現在の日時を取得
now = datetime.now()
print(now) # 2024-11-01 14:30:00.123456
日時情報の取得
次に指定した日付や時刻を取得してみましょう。
指定した日付や時刻を取得するには、次のような属性を使っていきます。
属性 | 説明 |
---|---|
year | 年 |
month | 月 |
day | 日 |
hour | 時 |
minute | 分 |
second | 秒 |
microsecond | マイクロ秒 |
先ほど解説したnow()関数を使って、下記のように取得することができます。
from datetime import datetime
now = datetime.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}")
出力結果は以下の通りです。
年: 2024
月: 11
日: 1
時: 14
分: 30
秒: 11
マイクロ秒: 123456
日付や時間の計算
続いて日付や時刻の加算、減算、比較などの操作を行ってみましょう。
日付の操作は、datetimeのtimedeltaを使うことで実現できます。
日付の加算
下記の日付は「2024年11月1日」から、1日後の日付を取得するコードです。
from datetime import datetime, timedelta
date = datetime(2024, 11, 1)
print(date) # 2024-11-01 00:00:00
one_day_later = date + timedelta(days=1)
print(one_day_later) # 2024-11-02 00:00:00
日付の減算
下記の日付は「2024年11月1日」から、1日前の日付を取得するコードです。
from datetime import datetime, timedelta
now = datetime(2024, 11, 1)
print(now) # 2024-11-01 00:00:00
one_day_later = now - timedelta(days=1)
print(one_day_later) # 2024-10-31 00:00:00
日付の比較
datetimeモジュールは、比較演算子を使って比較することができます。
from datetime import datetime
date1 = datetime(2024, 11, 1)
date2 = datetime(2024, 11, 2)
if date1 < date2:
print("date1 は date2 よりも前です")
日付のフォーマットを変更する
仕様に合わせて、datetimeモジュールが提供するフォーマット以外で日付を表したい場合があると思います。
そのような時は、strftime() メソッドを使うことでフォーマットを指定することが可能です。
from datetime import datetime
now = datetime.now()
formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_date) # 2024-11-01 14:30:00
また文字列からdatetimeモジュールを作りたい場合、strptime()メソッドを使います。
from datetime import datetime
date_string = "2024-11-01 14:30:00"
date_time = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")
print(date_time) # 2024-11-01 14:30:00
date クラスと time クラス
datetimeモジュールには、日付と時刻を個別に扱うためのdateクラスとtimeクラスがあります。
dateクラスは、年・月・日を表す日付オブジェクトを作成します。
例えば、今日の日付を取得したり、指定した文字列でdateクラスを作りたい場合、下記のように書くことができます。
from datetime import date
today = date.today()
print(today) # 2024-11-01
birthday = date(1990, 1, 1)
print(birthday) # 1990-01-01
またtimeクラスは、時間・分・秒・マイクロ秒を表す時刻オブジェクトを作成することができます。
from datetime import time
now = time(14, 30, 0)
print(now) # 14:30:00
最後に・・
いかがでしたでしょうか?
Pythonに限らず、コードを書いていると日付や時間を扱う機会に多く出会う一方で、日付や時間の操作は思わぬバグを生み出すことも多いです。
本記事を参考にして、Pythonにおける日付や時間の操作をマスターしていきましょう。