web-dev-qa-db-ja.com

Python日付から2桁の月と日を抽出する

アイソフォーマットを使用して月と日を抽出する方法はありますか?今日の日付が2013年3月8日であるとします。

>>> d = datetime.date.today()
>>> d.month
3
>>> d.day
8

が欲しいです:

>>> d = datetime.date.today()
>>> d.month
03
>>> d.day
08

これを行うには、ifステートメントを記述し、日または月が1桁の場合に先頭の0を連結しますが、必要なものを自動的に生成する方法があるかどうか疑問に思っていました。

98
codingknob

これらのプロパティのタイプを見てください:

In [1]: import datetime

In [2]: d = datetime.date.today()

In [3]: type(d.month)
Out[3]: <type 'int'>

In [4]: type(d.day)
Out[4]: <type 'int'>

両方とも整数です。したがって、automaticしたいことをする方法はありません。狭い意味では、あなたの質問に対する答えはnoです。

先行ゼロが必要な場合は、何らかの方法でフォーマットする必要があります。そのためには、いくつかのオプションがあります。

In [5]: '{:02d}'.format(d.month)
Out[5]: '03'

In [6]: '%02d' % d.month
Out[6]: '03'

In [7]: d.strftime('%m')
Out[7]: '03'
148
Roland Smith

文字列フォーマッターを使用して、任意の整数にゼロを埋め込むことができます。 Cのprintfと同じように機能します。

>>> d = datetime.date.today()
>>> '%02d' % d.month
'03'

py36:用に更新済み f文字列を使用!一般的なintsの場合、dフォーマッターを使用して、ゼロでパディングするように明示的に指示できます。

 >>> d = datetime.date.today()
 >>> f"{d.month:02d}"
 '07'

ただし、datetimesは特別であり、すでにゼロが埋め込まれた特別なフォーマッタが付属しています。

 >>> f"{d:%d}"  # the day
 '01'
 >>> f"{d:%m}"  # the month
 '07'
19
eduffy