Pythonで「時刻を含まない日付のみ」を扱いたい場合、datetime モジュールの date クラスを使用します。
生年月日や記念日、スケジュールの締め切り日など、時間(時・分・秒)の情報が不要なシーンで適しています。
ここでは、date オブジェクトの生成方法と、年・月・日それぞれの属性へのアクセス方法を解説します。
目次
dateオブジェクトの主要属性
date オブジェクトは以下の3つの属性を持ち、それぞれ整数(int)として値を取得できます。
| 属性名 | 型 | 説明 | 例 |
year | int | 西暦(年)を表します。 | 2025 |
month | int | 月を表します(1〜12)。 | 10 |
day | int | 日を表します(1〜31)。 | 12 |
実装例:製品リリース日の管理
特定の日付(製品の発売予定日)を定義し、その構成要素を表示するコード例です。また、実行日の日付を取得する today() メソッドも併せて紹介します。
ソースコード
from datetime import date
# 1. 特定の日付を指定して date オブジェクトを生成
# 引数: (年, 月, 日)
release_date = date(2025, 11, 20)
print(f"発売日 (date): {release_date}")
print("-" * 20)
# 各属性へのアクセス
# カッコ()は不要で、変数名.属性名 で取得します
print(f"年 (year) : {release_date.year}")
print(f"月 (month) : {release_date.month}")
print(f"日 (day) : {release_date.day}")
print("-" * 20)
# 2. 今日の日付を取得
# クラスメソッド today() を使用
today = date.today()
print(f"今日の日付 : {today}")
# 日付の比較も可能です
days_left = (release_date - today).days
print(f"発売まであと : {days_left} 日")
実行結果
発売日 (date): 2025-11-20
--------------------
年 (year) : 2025
月 (month) : 11
日 (day) : 20
--------------------
今日の日付 : 2025-12-15
発売まであと : -25 日
(※実行結果の「今日の日付」と「発売まであと」は、コードを実行した日によって変化します)
解説
datetime型との違い
datetime 型が「日付+時刻」を持つのに対し、date 型は純粋に「日付」だけの情報を持ちます。
そのため、d.hour や d.minute といった属性は存在せず、アクセスしようとすると AttributeError になります。
ゼロ埋めの必要性
取得した month や day は数値(例: 1, 5)です。「01」や「05」のようにゼロ埋めして表示したい場合は、文字列フォーマットを使用します。
# 例: 2025-01-05 のように整形
print(f"{release_date.year}-{release_date.month:02}-{release_date.day:02}")
