はじめに
Pythonの標準ライブラリdatetimeで日時を使おうとしたところ、datetime(日付と時間・時刻)はdate:日付とtime:時刻に分かれていることを知ったのでまとめる
datetimeモジュールのオブジェクトは以下
- datetime:日付と時刻を扱う
- date:日付を扱う
- time:時刻を扱う
Pythonだと、date(日付)とtime(時刻)が分かれている。dateとtimeで分かれているのは初めて見たので少し驚いた。
datetimeオブジェクト
year, month, day以外は指定のない場合0
from datetime import datetime
datetime(year, month, day, hour=0,
minute=0, second=0, microsecond=0)
使用頻度の高い「今」の指定はもちろんあり、now()で取得できる
from datetime import datetime
now = datetime.now()
print(now)
print(now.second)
print(now.microsecond)
> 2023-06-29 14:53:45.758698
> 45
> 758698
microsecondは小数点以下として表示されるところが注意すべき所
combine()
dateオブジェクトtimeオブジェクトを結合して、datetimeオブジェクトを作るcombine()が存在する。確かにdateとtimeが分かれているなら使うことがありそう
dateオブジェクト
日付を扱う。現在の日付を取得する場合、date.today()で指定できる
from datetime import date
day = date.today()
> 2023-06-29
timeオブジェクト
from datetime import time
t1 = time(13, 0, 0)
> 13:00:00
time.time()はUNIXエポックを基準点とした経過秒数を返す関数。float型でマイクロ秒は小数点以下で入る。
さらに、datetime.fromtimestamp()にタイムスタンプを渡すとタイムスタンプからdatetimeに変換できる。この辺りはよく使いそう
from datetime import datetime, time
unix_time_stamp = time.time()
> 1688018941.685929
datetime.fromtimestamp(unix_time_stamp)
> 2023-06-29 15:09:01.685929
おわりに
確かに他の言語で、日付だけ必要で時刻をデフォルトの00:00:00の様な指定にしたり、逆に時刻だけ必要なんだけど、日付部分をどうしよう? と悩むことが時々あるので、dateとtimeに分かれているのはややこしい気もしつつ、確かに正しさを感じる。