Python の日付時刻出力のメモ

日付時刻出力のメモを、あえて自分でメモしたくなった。

何も考えないで。。

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