formatを使う
import datetime
now = datetime.datetime.now()
y = now.year
m = now.month
d = now.day
h = now.hour
'{0}_{1:02d}_{2:02d}_{3:02d}'.format(y, m, d, h)
strftimeを使う
こちらの方が簡単で、よく見ます。import datetime
# ex. 2021_01_01_00
now = datetime.datetime.now()
now.strftime("%Y_%m_%d_%H")
# ex. 2021-01-01 00:00:00
now.strftime("%Y-%m-%d %H:%M:%S")
%Y 西暦 (4桁) の 10 進表記
%m 0埋めした月
%d 0埋めした日にち
%H 0埋めした時 (24時間表記)
%M 0埋めした分
%S 0埋めした秒
%表記は、大文字と小文字で違う意味になるので注意。
https://docs.python.org/ja/3/library/datetime.html#strftime-and-strptime-format-codes
ゼロ埋めしないなら例えば
import datetime
now = datetime.datetime.now()
# ex. 2021-1-1 0:0:0
f"{now.year}-{now.month}-{now.day} {now.hour}:{now.minute}:{now.second}"
formatで失敗したこと
ゼロ埋めを{0:04d}.format(x)の形で覚えていたので、全部を{0:02d}, {0:02d}としてしまい、エラーが出ていました。ValueError: cannot switch from automatic field numbering to manual field specification これは以前のpythonの書き方(今も使える)で、現在ではフォーマット設定は左から順に{0} {1}, ... とするのが正しいです。
{}_{1:02d}_{2:02d}_{3:02d}'.format(y, m, d, h)
というように0:を省略することもできません。
(yearは必ず4桁だから0も省略しようとしたらエラー)
0 件のコメント:
コメントを投稿