Python PR

【Python】日付(年月日)と時間の取得と何日後の計算方法

記事内に商品プロモーションを含む場合があります

この記事では、Pythonで日付(年月日)と時間を取得する方法と何日前、何日後の日付を計算する方法を解説します。

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

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

それでは、日付や時間を取得する方法と計算する方法を見ていきましょう!

日付の取得・生成

日付を取得するには、datetimeモジュールのdate型を使います。

from datetime import date

今日の日付

date.today()メソッドを使うことで今日の日付を持ったdate型のインスタンスを生成することができます。

from datetime import date

today = date.today()
print(today, type(today))
# 2023-10-02 <class 'datetime.date'>

日付の生成

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

from datetime import date

someday = date(2023, 1, 2)
print(someday, type(someday))
# 2023-01-02 <class 'datetime.date'>

年月日の取得

それぞれの属性にアクセスすることで年月日をバラバラに取得することができます。

from datetime import date

today = date.today()

print(f'年: {today.year}')  # 年: 2023
print(f'月: {today.month}') # 月: 10
print(f'日: {today.day}')   # 日: 2

日時の取得・生成

日付に加え時間も取得したい場合は、datetimeモジュールのdatetime型を使います。

from datetime import datetime

現在の日時

datetime.now()を使うことで現在の時刻を持ったdatetime型のインスタンスを生成することができます。

from datetime import datetime

now = datetime.now()
print(now)
# 2023-10-02 22:47:27.846610

日時の生成

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

from datetime import datetime

someday = datetime(2023, 1, 2, 3, 4, 5, 6)
print(someday, type(someday))
# 2023-01-02 03:04:05.000006 class <'datetime.datetime'>

時分秒の取得

属性にアクセスすることで時分秒をバラバラに取得できます。

from datetime import datetime

now = datetime.now()

print(f'年: {now.year}')  # 年: 2023
print(f'月: {now.month}') # 月: 10
print(f'日: {now.day}')   # 日: 2

print(f'時: {now.hour}')               # 時: 23
print(f'分: {now.minute}')             # 分: 1
print(f'秒: {now.second}')             # 秒: 44
print(f'マイクロ秒: {now.microsecond}') # マイクロ秒: 764448

日付と日時の計算

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

from datetime import date, timedelta

today = date.today()
print(today)
# 2023-10-02

# 今日の日付 + 1日
tomorrow = today + timedelta(days=1)
print(tomorrow)
# 2023-10-03

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

from datetime import date, timedelta

today = date.today()
print(today)
# 2023-10-02

next_month= today + timedelta(days=31)
print(next_month)
# 2023-11-02

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

from datetime import date, timedelta

today = date.today()
print(today)
# 2023-10-02

yesterday = today - timedelta(days=1)
print(yesterday)
# 2023-10-01

datetime型を使うことで時間で計算することも可能です。

from datetime import datetime, timedelta

now = datetime.now()
print(now)
# 2023-10-02 23:14:19.320259

h24 = now + timedelta(hours=3000)
print(h24)
# 2024-02-04 23:14:19.320259

日付のフォーマット

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

from datetime import date

today = date.today()
print(today.strftime('%Y年%m日%d日'))
# 2023年10日02日

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

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

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

from datetime import date

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

print(td, type(td))
# 2023-10-02 <class 'str'>

日付から逆フォーマット

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

from datetime import date

d = '2023-01-02'

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

まとめ

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

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

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

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