有没有办法使用isoformats提取月和日?让我们假设今天的日期是2013年3月8日。
>>> d = datetime.date.today()
>>> d.month
3
>>> d.day
8
我想:
>>> d = datetime.date.today()
>>> d.month
03
>>> d.day
08
我可以通过编写if语句并连接前导0,以防日期或月份是单个数字,但是想知道是否有自动生成我想要的方式。
答案 0 :(得分:143)
查看这些属性的类型:
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'
答案 1 :(得分:18)
您可以使用字符串格式化程序用零填充任何整数。它的行为就像C printf
。
>>> d = datetime.date.today()
>>> '%02d' % d.month
'03'
更新了py36:使用f-strings!对于一般int
,您可以使用d
格式化程序并明确告诉它填充零:
>>> d = datetime.date.today()
>>> f"{d.month:02d}"
'07'
但是datetime
是特殊的,并且带有已填零的特殊格式化程序:
>>> f"{d:%d}" # the day
'01'
>>> f"{d:%m}" # the month
'07'