Pythonのdatetimeは自動的に0埋めされます。
例えば、
2019年4月7日→2019/04/07
のように、4と7の前に0が入ります。
右側の書き方(2019/04/07)なら良いですが、
左側の書き方が0埋めされる(2019年04月07日)と不自然ですよね。
そこで0埋めしない方法を紹介します。
Linuxなどなら簡単です。
通常、datetimeの月と日は、%m, %dで書きますよね。
それを%-m, %-d とするだけです。
date.py
from datetime import datetime
time_now = datetime.now()
date_with_0 = time_now.strftime("%Y/%m/%d")
date_without_0 = time_now.strftime("%Y/%-m/%-d")
print(date_with_0)
print(date_without_0)
これで出力は
2019/04/07
2019/4/7
(現在の日付)
となるはずです。
しかし!
Windowsでは使えません。
Windowsでも0埋めなしで出力したい・・・
という場合どうすればいいのか。
月と日を個別に出してlstripで先頭の0を削除します。
力業ですが・・・。
もっといいやり方あれば、是非教えてくださいm(_ _)m
date_windows.py
from datetime import datetime
time_now = datetime.now()
year = time_now.strftime("%Y")
month = time_now.strftime("%m").lstrip("0")
day = time_now.strftime("%d").lstrip("0")
date_with_0 = time_now.strftime("%Y/%m/%d")
date_without_0 = year + "/" + month + "/" + day
print(date_with_0)
print(date_without_0)
出力は
2019/04/07
2019/4/7
(現在の日付)
lstrip("0")は、文字列の先頭が0なら削除します。
ちなみに、記事の上部のように
2019年4月7日
と出力したい場合は、
date_windows.py
from datetime import datetime
time_now = datetime.now()
year = time_now.strftime("%Y")
month = time_now.strftime("%m").lstrip("0")
day = time_now.strftime("%d").lstrip("0")
date_without_0_jp = year + "年" + month + "月" + day + "日"
print(date_without_0_jp)
で実装できます。