日付時刻出力のメモを、あえて自分でメモしたくなった。
何も考えないで。。
import datetime import re ndt = datetime.datetime.now() print(type(ndt)) # <class 'datetime.datetime'> print(ndt) # 2023-11-22 20:22:21.038937
strftime を使う。
ndt = datetime.datetime.now() print(ndt.strftime('%Y-%m-%d %H:%M:%S.%f%z')) # 2023-11-22 20:22:21.038937
特にタイムゾーンを指定していないから、%z は、空白
datetime.timezone を指定
そのまま str() で変換
t_delta = datetime.timedelta(hours=9) nowstr = str(datetime.datetime.now(datetime.timezone(t_delta))) print(f'{nowstr}') # 2023-11-22 20:22:21.038937+09:00
datetime.timezone を指定
strftime で、%z を使う
t_delta = datetime.timedelta(hours=9) ndt = datetime.datetime.now(datetime.timezone(t_delta)) print(ndt.strftime('%Y-%m-%d %H:%M:%S.%f%z')) # 2023-11-22 20:22:21.038937+0900
ミリ秒までにする。
t_delta = datetime.timedelta(hours=9) nowstr = str(datetime.datetime.now(datetime.timezone(t_delta))) nowstr = nowstr[:23] + nowstr[26:] print(f'{nowstr}') # 2023-11-22 20:22:21.038+09:00
isoformat で出力
t_delta = datetime.timedelta(hours=9) nowstr = datetime.datetime.now(datetime.timezone(t_delta)).isoformat() print(nowstr) # 2023-11-22T20:22:21.038937+09:00
isoformat の 'T' を取り除く
t_delta = datetime.timedelta(hours=9) nowstr = datetime.datetime.now(datetime.timezone(t_delta)).isoformat() nowstr = re.sub(r'T', ' ', nowstr) print(nowstr) # 2023-11-22 20:22:21.038937+09:00
タイムゾーンの時間差のみ
t_delta = datetime.timedelta(hours=9) nowstr = str(datetime.datetime.now(datetime.timezone(t_delta))) m = re.search(r'(\+|\-)\d{2}:\d{2}$', nowstr) tail = m.group()[:3] + m.group()[4:] print(tail) # +0900
タイムゾーン書式を、00:00 ではなく、0000 にする
t_delta = datetime.timedelta(hours=9) nowstr = str(datetime.datetime.now(datetime.timezone(t_delta))) m = re.search(r'(\+|\-)\d{2}:\d{2}$', nowstr) tail = m.group()[:3] + m.group()[4:] nowstr = nowstr[:26] + tail print(nowstr) # 2023-11-22 20:22:21.038937+0900