2013-03-19 18 views
55

isoformatsを使用して月と日を抽出する方法はありますか?Pythonの日付から二桁の月と日を抽出する

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

文とケースのリーディング0を連結日や月が一桁であれば、私は書くことによってこれを行うことができます:今日の日付は、私が欲しい3月8日、2013年

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

であると仮定します私が望むものを自動的に生成する方法があるのか​​どうか疑問に思っていました。

+10

'd.strftime( '%のM')'と 'd.strftime( '%d' を)'これは、重複して持っています。 – bernie

+1

それは愚か者です - しかし、私はこれが嘘つきよりもはっきりしていると言わなければなりません。 – mgilson

答えて

91

ルック:

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

ありがとうございます。マニュアル番号付きの複数の値を使用する場合は、「:02d」の前に番号を追加してください。たとえば、{0}/{1:02d} - {2:02d} _ {3} .json'.format(othervalue 、currentMonth、currentDay、othervalue2) – Alex

+0

パッディングされたゼロストリングを得るために別のフォーマット方法を追加すると、 'zfill()'関数を使うことができます: 'str(d.month).zfill(2)' –

8

文字列フォーマッタを使用して、整数に0を埋め込むことができます。それはCのprintfのように機能します。これらのプロパティの種類で

>>> d = datetime.date.today() 
>>> '%02d' % d.month 
'03' 
関連する問題