この記事では、Pythonのdatetimeモジュール
を使用して日付データを扱う方法について解説します。
日付データの作成方法からフォーマット変換、計算、比較、操作まで、具体的なサンプルコードを通じてわかりやすく説明します。
Pythonで日付データを操作する基本的な手法を学ぶことができます。
日付データの作成方法
文字列からdatetimeオブジェクトを作成する方法
Pythonのdatetimeモジュール
を使用すると、文字列からdatetimeオブジェクト
を簡単に作成することができます。
以下はその方法を示すサンプルコードです。
from datetime import datetime
date_str = "2022-10-15"
date_obj = datetime.strptime(date_str, "%Y-%m-%d")
print(date_obj)
2022-10-15 00:00:00
このコードでは、2022-10-15
という文字列をdatetimeオブジェクトに変換しています。
strptime()
メソッドを使用し、変換したい文字列とそのフォーマットを指定します。
年月日を指定してdatetimeオブジェクトを作成する方法
特定の年、月、日を指定してdatetimeオブジェクト
を作成する方法もあります。
以下はその方法を示すサンプルコードです。
from datetime import datetime
date_obj = datetime(year=2022, month=10, day=15)
print(date_obj)
2022-10-15 00:00:00
このコードでは、年に2022、月に10、日に15を指定してdatetimeオブジェクト
を作成しています。
datetime()関数
を使用し、引数として年、月、日を指定します。
日付データのフォーマット変換
日付データを文字列に変換する方法
Pythonのdatetimeモジュール
を使用して、日付データを文字列に変換する方法を紹介します。
datetimeオブジェクトのstrftime()
メソッドを使用することで、指定したフォーマットの文字列に変換することができます。
以下にサンプルコードを示します。
import datetime
# 現在の日付を取得
now = datetime.datetime.now()
# 日付データを文字列に変換
date_str = now.strftime("%Y-%m-%d %H:%M:%S")
print(date_str)
2024-02-14 06:56:48
上記のコードでは、現在の日付を取得し、strftime()
メソッドを使って%Y-%m-%d %H:%M:%S
のフォーマットに従って文字列に変換しています。
実行すると、指定したフォーマットの文字列が出力されます。
日付データを指定したフォーマットで表示する方法
日付データを特定のフォーマットで表示する際には、strftime()
メソッドを使用してフォーマットを指定します。
以下に例を示します。
import datetime
# 日付データを作成
date = datetime.datetime(2022, 9, 15)
# 指定したフォーマットで日付を表示
formatted_date = date.strftime("%A, %B %d, %Y")
print(formatted_date)
Thursday, September 15, 2022
上記のコードでは、2022年9月15日の日付データを作成し、strftime()
メソッドを用いて%A, %B %d, %Y
のフォーマットで表示しています。
実行すると、曜日、月、日、年が含まれた文字列が出力されます。
日付データの計算
日付の加算と減算
Pythonのdatetime
モジュールを使用すると、日付データに対して簡単に加算や減算を行うことができます。
日付データに対してtimedelta
を使用することで、日数単位での加算や減算が可能です。
以下に具体的な例を示します。
from datetime import datetime, timedelta
# 現在の日付を取得
current_date = datetime.now()
# 10日後の日付を計算
future_date = current_date + timedelta(days=10)
print(f"10日後の日付: {future_date}")
# 2週間前の日付を計算
past_date = current_date - timedelta(weeks=2)
print(f"2週間前の日付: {past_date}")
10日後の日付: 2024-02-24 06:56:59.466517
2週間前の日付: 2024-01-31 06:56:59.466517
上記のコードでは、現在の日付を取得し、それに対して10日後と2週間前の日付を計算しています。
timedelta
に日数や週数を指定することで、日付データを加算したり減算したりすることができます。
日付の差分を計算する方法
日付データ同士の差分を計算する際も、datetime
モジュールを使用して簡単に行うことができます。
以下に例を示します。
from datetime import datetime
# 2つの日付を定義
date1 = datetime(2022, 5, 15)
date2 = datetime(2022, 5, 10)
# 日付の差分を計算
date_diff = date1 - date2
print(f"日付の差分: {date_diff}")
日付の差分: 5 days, 0:00:00
上記のコードでは、datetime
オブジェクト同士を引き算することで、日付の差分を取得しています。
差分はtimedelta
オブジェクトとして返され、日数や秒数などの情報を含んでいます。
日付データの比較
日付の大小比較
Pythonのdatetimeモジュール
を使用して、日付データ同士を比較することができます。
比較演算子を使って、日付の大小関係を確認できます。
例えば、以下のサンプルコードでは、2つの日付データを比較しています。
from datetime import datetime
date1 = datetime(2022, 5, 10)
date2 = datetime(2022, 5, 15)
if date1 < date2:
print("date1はdate2よりも前の日付です")
elif date1 > date2:
print("date1はdate2よりも後の日付です")
else:
print("date1とdate2は同じ日付です")
date1はdate2よりも前の日付です
このコードでは、date1
とdate2
を比較し、それぞれの日付が前後どちらかを判定しています。
日付の等値比較
日付データ同士が等しいかどうかを比較する場合も、比較演算子を使用します。
以下のサンプルコードでは、2つの日付データが等しいかどうかを判定しています。
from datetime import datetime
date1 = datetime(2022, 5, 10)
date2 = datetime(2022, 5, 10)
if date1 == date2:
print("date1とdate2は同じ日付です")
else:
print("date1とdate2は異なる日付です")
date1とdate2は同じ日付です
このコードでは、date1
とdate2
が同じ日付かどうかを判定し、結果を出力しています。
日付データ同士の比較は、プログラムで日付処理を行う際に重要な要素となります。
日付データの操作
日付データの年、月、日の取得
Pythonのdatetime
モジュールを使用すると、日付データから年、月、日を取得することができます。
以下はサンプルコードです。
from datetime import datetime
# 現在の日付データを取得
now = datetime.now()
# 年、月、日を取得
year = now.year
month = now.month
day = now.day
print(f"年: {year}, 月: {month}, 日: {day}")
年: 2024, 月: 2, 日: 14
上記のコードでは、現在の日付データを取得し、year
、month、day
に年、月、日をそれぞれ格納しています。
日付データの曜日の取得
日付データから曜日を取得するには、weekday()
メソッドを使用します。
0が月曜日、6が日曜日を表します。
以下はサンプルコードです。
from datetime import datetime
# 日付データを作成
date_str = "2023-09-15"
date = datetime.strptime(date_str, "%Y-%m-%d")
# 曜日を取得
weekday = date.weekday()
# 曜日を日本語で表示
weekdays = ["月", "火", "水", "木", "金", "土", "日"]
weekday_jp = weekdays[weekday]
print(f"曜日: {weekday_jp}")
曜日: 金
上記のコードでは、指定した日付データから曜日を取得し、日本語で表示しています。
曜日を表す数字をweekdays
リストのインデックスとして使用して、曜日を取得しています。