21
15

More than 5 years have passed since last update.

Python datetime 0埋めしない方法(Windows)

Posted at

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)

で実装できます。

21
15
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
15