🕰
Pythonのdatetime(+pendulum)の扱いまとめ
datetime
import+TimeZone
from datetime import datetime, timezone
TIME_ZONE: str = timezone(timedelta(hours=+9), 'Asia/Tokyo')
現在時刻でdatetime生成
datetime.now(TIME_ZONE)
指定時刻でdatetime生成
datetime(year=2020, month=1, day=30, hour=12, minute=00, second=00, tzinfo=TIME_ZONE)
datetime → str(ISO形式)
datetime.now().isoformat('seconds')
datetime → str(指定形式)
datetime.now().strftime('%Y-%m-%d %H:%M:%S')
str → datetime (ISO形式)
datetime.fromisoformat("1975-05-21T22:00:00+09:00")
str → datetime (指定形式)
datetime.strptime("1975/05/21 22:10:30", "%Y/%m/%d %H:%M:%S")
date,timeからのdatetime生成
now = datetime.now()
new_datetime = datetime.combine(now.date(), now.time(), tzinfo=TIME_ZONE)
pendulum
import+TimeZone
import pendulum
TIME_ZONE: str = "Asia/Tokyo"
現在時刻でdatetime生成
pendulum.now(TIME_ZONE)
指定時刻でdatetime生成
pendulum.datetime(year=2020, month=1, day=30, hour=12, minute=00, second=00, tz=TIME_ZONE)
datetime → str(ISO形式)
pendulum.now(TIME_ZONE).isoformat('seconds')
datetime → str(指定形式)
pendulum.now(TIME_ZONE).format("YYYYMMDDHHmmSS")
str → datetime(ISO形式)
pendulum.parse("1975-05-21T22:00:00+09:00")
str → datetime(指定形式)
pendulum.from_format("1975/05/21 22:10:30", "YYYY/MM/DD HH:mm:SS", tz=TIME_ZONE)
Discussion
文字列との変換について、SSが大文字だと秒の少数部(Fractional Second)になってしまうので意図した結果にならないと思われます