Python で日付や時刻情報を扱う

datetimeモジュールの扱い方

Python では日付や時刻情報を扱うことが出来ます。
この記事では、datetimeモジュールを使用して、日付や時刻情報を扱う方法をご紹介致します。

他の Python の記事⼀覧は こちら

目次

現在時刻の取得

datetimeモジュールを使用し、現在日時を取得してみましょう。
現在日時の取得は、datetimeクラスのクラスメソッド「now()」で行います。
以下のnowtime.pyを作成して実行してみてください。

import datetime
nowtime = datetime.datetime.now()
print(f"現在時刻:{nowtime}") 

実行してみると、ターミナルに現在の日時が出力されます。

現在時刻:2024-05-09 15:56:37.974003

上記は編集者がnowtime.pyを実行した時間です。
実際に出力される時刻は皆さんがプログラムを実行した時間で取得され、表示されている事と思います。

取得した日時データから必要な情報を抜き出す

datetime.now()で取得した日時データは、年、月、日、時、分、秒、さらにはマイクロ秒まで取得します。
このままでは使いづらいので、必要な情報を取り出してみましょう。
先ほどのnowtime.pyに以下のように追記して、実行してみてください。

import datetime
nowtime = datetime.datetime.now()
print(f"現在時刻:{nowtime}") 
# 以下、追記分
print(f"Month:{nowtime.month}")
print(f"Day:{nowtime.day}")
print(f"Hour:{nowtime.hour}")
print(f"Minute:{nowtime.minute}")

実行してみると、ターミナルに以下の内容が出力されます。

現在時刻:2024-05-09 15:56:37.974003
Month:5
Day:9
Hour:15
Minute:56

取得した現在日時のデータから、月、日、時、分を抽出できました。もちろん、年や、秒なども取得できますので必要に応じて抽出し、使いやすいデータに変換して下さい。

時刻データに対し、演算を行う

取得した日時データに対して演算を行うには、同様に日時のデータを用意する必要があります。
datetimeモジュール内のtimedeltaクラスを利用することで、日時のインスタンスを作成する事ができます。
以下のcalculation_time.pyを作成し、実行してみてください。

import datetime
nowtime = datetime.datetime.now()
print(f"現在時刻:{nowtime}") 
addtime = datetime.timedelta(hours=1, minutes=30) #1時間30分
aftertime = nowtime + addtime #現在時刻+1時間30分
print(f"1時間30分後:{aftertime}")

実行してみると、ターミナルに以下の内容が出力されます。

現在時刻:2024-05-09 16:00:51.579783
1時間30分後:2024-05-09 17:30:51.579783

変数addtimeには、timedeltaクラスを利用して「1時間30分」という加算用日時データを格納しています。
変数aftertimeには、現在日時が格納された変数nowtimeと、加算用日時データが格納された変数addtimeの合計値が格納されます。

日時データのフォーマット

strftime()メソッドを使用することで、日時データを指定のフォーマットに変換することが出来ます。
calculation_time.pyで作成した、現在時刻と1時間30分後の日時データの出力を、時刻のみ表示するように変換してみましょう。
先ほどのcalculation_time.pyに以下のように追記して、実行してみてください。

import datetime
nowtime = datetime.datetime.now()
print(f"現在時刻:{nowtime}") 
addtime = datetime.timedelta(hours=1, minutes=30)
aftertime = nowtime + addtime
print(f"1時間30分後:{aftertime}")
# 以下、追記分
print(f"現在時刻(日時フォーマット):{nowtime.strftime('%c')}")
print(f"1時間30分後(日時フォーマット):{aftertime.strftime('%c')}")
print(f"現在時刻(時:分のみ表示):{nowtime.strftime('%H:%M')}")
print(f"1時間30分後(時:分のみ表示)):{aftertime.strftime('%H:%M')}")

実行してみると、ターミナルに以下の内容が出力されます。

現在時刻:2024-05-09 16:33:14.290244
1時間30分後:2024-05-09 18:03:14.290244
現在時刻(日時フォーマット):Thu May  9 16:33:14 2024
1時間30分後(日時フォーマット):Thu May  9 18:03:14 2024
現在時刻(時:分のみ表示):16:33
1時間30分後(時:分のみ表示)):18:03

strftime(‘%c’)を適用した出力は、書式化された日付と時刻を表す文字列を生成します。
strftime(‘%H:%M’)を適用した出力は、日時データから時(%H)と分(%M)のみを取り出して表示しています。

日時データはタイムスタンプや予定のスケジューリング、フィルタリングや並び替えなど様々な利用方法があります。是非習得してプログラミングに生かしてください。

(Visited 48 times, 1 visits today)
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次