【Python】datetimeで日付だけ取得・計算する方法を解説

Pythonで日付や時刻を扱う際には、datetimeモジュールが非常に便利です。

しかし、初心者にとってはその使い方が少し難しかったり、今これから使い方を知ろうとしている人もいるでしょう。

そこで、この記事ではPythonのdatetimeモジュールを使って日付だけを取得し、文字列に変換する方法をわかりやすく解説します。

目次から探す

datetimeオブジェクトから日付だけを取得する方法

Pythonのdatetimeモジュールを使って、日付と時刻を含むdatetimeオブジェクトから日付だけを取得する方法を紹介します。

以下の3つの方法を説明します。

date()メソッドを使った方法

datetimeオブジェクトには、 date() メソッドが用意されています。

このメソッドを使うと、datetimeオブジェクトから日付部分だけを取り出すことができます。


from datetime import datetime
# 現在の日時を取得
now = datetime.now()
# 日付だけを取得
date_only = now.date()
print(date_only)
2022-01-01

この方法では、取得した日付はdateオブジェクトとして返されます。

文字列に変換するには、 strftime() メソッドを使います。

strftime()メソッドを使った方法

strftime() メソッドを使うと、datetimeオブジェクトを指定したフォーマットの文字列に変換できます。

日付だけを取得して文字列に変換する場合は、以下のように書きます。


from datetime import datetime
# 現在の日時を取得
now = datetime.now()
# 日付だけを取得して文字列に変換
date_str = now.strftime('%Y-%m-%d')
print(date_str)
'2022-01-01'

strftime() メソッドでは、%Yが年、%mが月、%dが日に対応しています。

これらを組み合わせて、日付のフォーマットを自由に指定できます。

各属性を利用した方法

datetimeオブジェクトには、yearmonthdayといった属性があります。

これらの属性を使って、日付だけを取得することもできます。


from datetime import datetime
# 現在の日時を取得
now = datetime.now()
# 日付だけを取得
year = now.year
month = now.month
day = now.day
print(year, month, day)
2022 1 1

この方法では、取得した日付は整数として返されます。

文字列に変換するには、 str() 関数や文字列のフォーマット機能を使います。


date_str = f"{year}-{month:02d}-{day:02d}"
print(date_str)
'2022-01-01'

以上の方法を使って、datetimeオブジェクトから日付だけを取得し、文字列に変換することができます。

適切な方法を選んで、日付の取得や変換を行ってください。

目次から探す