Python

【Python】日付の取得と計算する方法を解説

この記事では、Pythonで日付を取得する方法と使い方について解説します。

日付は標準ライブラリであるdatetimeモジュールで扱うことができます。

曜日を取得したい場合は以下の記事を参考にしてください。

曜日を取得する方法を解説します

それでは、datetimeモジュールを使って日付を扱う方法を見ていきましょう!

日付の取得

日付を取得するにはdatetimeモジュールのdate.today()を使います。日付に加えて時間も取得したい場合は同モジュールのdatetime.today()を使います。

datetime.date.today 2021-1-1
datetime.datetime.today 2021-1-1 17:04:49.198164

今日の日付の取得

datetime.date.today()を使うことで今日の日付を取得することができる。datetime.datetime.today()では時刻まで取得できます。

from datetime import date, datetime

print(date.today())
print(datetime.today())

実行結果

2021-10-14
2021-10-14 17:04:49.198164

任意の日付の生成

任意の日付からdateオブジェクトやdatetimeオブジェクトを生成することができます。

import datetime

day = datetime.date(2022, 1, 1)
print(f'日付: {day}, 型: {type(day)}')

day = datetime.datetime(2022, 1, 1)
print(f'日付: {day}, 型: {type(day)}')

実行結果

日付: 2022-01-01, 型: <class 'datetime.date'>
日付: 2022-01-01 00:00:00, 型: <class 'datetime.datetime'>

datetimeオブジェクトでは、時間を指定することもできます。

import datetime

day = datetime.datetime(2022, 1, 1, 23, 59, 59)
print(f'日付: {day}, 型: {type(day)}')

実行結果

日付: 2022-01-01 23:59:59, 型: <class 'datetime.datetime'>

年・月・日をバラバラに取得

それぞれの属性にアクセスすることで細かく日付を取得することができます。

from datetime import date, datetime

today = date.today()
todayall = datetime.today()

# 年
print(today.year)
print(todayall.year)

# 月
print(today.month)
print(todayall.month)

# 日
print(today.day)
print(todayall.day)

実行結果

2021
2021
10
10
14
14

datetime.datetime.today()クラスは、日付だけでなく時刻もバラバラに取得することができます。

from datetime import datetime

todayall = datetime.today()

# 時
print(todayall.hour)

# 分
print(todayall.minute)

# 秒
print(todayall.second)

# m秒
print(todayall.microsecond)

実行結果

17
20
40
195574

今日ではない日付の取得(日付の計算)

datetime.datetime.timedelta()クラスを使うことで日付を計算することができます。例えば明日の日付を取得したい場合は、今日の日付を取得して1日足すことで取得することができます。

from datetime import date, datetime, timedelta

today = date.today()

# 今日の日付 + 1日
tomorrow = today + timedelta(days=1)
print(tomorrow)

# datetime.today()も計算可能
todayall = datetime.today()

tomorrow = todayall + timedelta(days=1)
print(tomorrow)

実行結果

2021-10-15
2021-10-15 17:34:45.400141

月をまたぐことも可能です。

from datetime import date, timedelta

today = date.today()

tomorrow = today + timedelta(days=30)
print(tomorrow)

実行結果

2021-11-13

さらに引くことで過去の日付を取得することもできます。

from datetime import date, timedelta

today = date.today()

yesterday = today - timedelta(days=1)
print(yesterday)

実行結果

2021-10-13

日付のフォーマット

strftime()メソッドを使うことで引数に渡した書式に従ってフォーマットさせることができます。

from datetime import date

today = date.today()
print(today.strftime('%Y年%m日%d日'))

実行結果

2021年10日14日

詳しい書式は以下のリンクを参考にしてください。

Linkstrftime() と strptime() の書式コード - datetime --- 基本的な日付型および時間型 — Python ドキュメント

isoformat()メソッドを使うことでYYYY-MM-DDで表した文字列を取得できます。

from datetime import date

today = date.today()
td = today.isoformat()

print(td, type(td))

実行結果

2021-10-14 <class 'str'>

日付から逆フォーマット

文字列の書式がYYYY-MM-DDならfromisoformat()メソッドを使うことでdatetime.dateオブジェクトを生成することができます。

from datetime import date

d = '2022-01-01'

d = date.fromisoformat(d)
print(f'{d.year}年{d.month}月{d.day}日')

実行結果

2022年1月1日

まとめ

この記事では、Pythonで日付を取得する方法を解説しました。

日付を使うことで日時を指定した処理が可能です。

例えば、ブログの記事は日時を指定して公開することができます。datetimeを使うことで同じような処理を簡単に実装できます。

それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ