2013-03-19 1014 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' 
相关问题