Pythonで「日付を含まない時刻のみ」を扱いたい場合(例:開店時間、アラーム設定時刻など)、datetime モジュールの time クラスを使用します。 datetime 型と異なり、年月日やタイムゾーン(デフォルトでは)の情報を持たず、純粋に「時・分・秒・マイクロ秒」を管理します。
ここでは、time オブジェクトの生成方法と、各要素へのアクセス方法を解説します。
目次
実装例:定刻の定義と要素の取得
特定の時刻(12時15分05秒)を定義し、その構成要素である時、分、秒を個別に取得するコード例です。
ソースコード
from datetime import time
# 1. 特定の時刻を指定して time オブジェクトを生成
# 引数の順序: (時, 分, 秒, マイクロ秒)
# 秒とマイクロ秒は省略可能(省略時は0)
scheduled_time = time(12, 15, 5)
print(f"設定時刻 (time): {scheduled_time}")
print("-" * 20)
# 2. 各属性へのアクセス
# カッコ()は不要で、変数名.属性名 で取得します
print(f"時 (hour) : {scheduled_time.hour}")
print(f"分 (minute) : {scheduled_time.minute}")
print(f"秒 (second) : {scheduled_time.second}")
# マイクロ秒へのアクセス(指定していないので0)
print(f"マイクロ秒 : {scheduled_time.microsecond}")
実行結果
設定時刻 (time): 12:15:05
--------------------
時 (hour) : 12
分 (minute) : 15
秒 (second) : 5
マイクロ秒 : 0
解説
timeオブジェクトの特性
- 保持する情報:
hour(0-23),minute(0-59),second(0-59),microsecond(0-999999) のみを持ちます。 - 日付との関係:
timeオブジェクト単体では「いつの(何年の何月の)」という情報を持たないため、日付をまたぐ計算(例:23時から2時間後)などを単独で行うことはできません。そのような計算が必要な場合はdatetime型を使用してください。
文字列フォーマット
time オブジェクトも strftime() メソッドを持っており、任意の形式の文字列に変換可能です。
# 例: "12時15分" という文字列を作成
print(scheduled_time.strftime("%H時%M分"))
