155

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

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

私が欲しい:

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

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

4

2 に答える 2

244

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

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'>

どちらも整数です。したがって、あなたが望むことを自動的に行う方法はありません。したがって、狭義では、あなたの質問に対する答えはノーです。

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

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'

In [8]: f'{d.month:02d}'
Out[8]: '03'
于 2013-03-19T20:24:35.800 に答える
50

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

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

py36 用に更新: f-strings を使用してください! 一般的なints の場合、dフォーマッタを使用して明示的にゼロを埋め込むように指示できます。

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

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

 >>> f"{d:%d}"  # the day
 '01'
 >>> f"{d:%m}"  # the month
 '07'
于 2013-03-19T20:14:37.167 に答える