2013-03-19 171 views
55

有沒有使用isoformats提取月份和日期的方法?讓我們假設今天的日期是3月8日,2013年從Python日期中提取兩位數月份和日期

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

我想:

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

我可以通過if語句寫,一天或一個月的情況下,串聯領先的0做,這是一個單一的數字但想知道是否有一種自動生成我想要的方式。

+10

'd.strftime( '%M')'和'd.strftime( '%d')'這一定是重複的。 – bernie 2013-03-19 20:10:24

+1

這是一個騙局 - 但我必須說,這個比騙子更清楚。 – mgilson 2013-03-19 20:13:16

回答

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 2017-07-28 08:58:09

+0

只需要添加另一種格式化方法來獲得填充的零字符串,您可以使用'zfill()'函數,如下所示:'str(d.month).zfill(2)' – 2018-03-01 04:22:24

8

您可以使用字符串格式化程序填充任何帶零的整數。它的行爲就像C的printf

>>> d = datetime.date.today() 
>>> '%02d' % d.month 
'03' 
相關問題