2013-01-02 30 views
0

我想使用日期时间模块。我需要这个月作为一个INT与前面的ZERO回来。在形式01 JAN,02 FEB等等等等,我可以用得到1,蟒INT /日期格式

today = date.today() 
m = today.month 

我能得到正确的格式,但不是作为一个INT这种方式。

today.strftime("%m") 

是否有一种简单的方法来获得所需的格式。我看过参考文献,我确信我错过了,但有人可以帮忙。

+1

适合我:'>>> import datetime; >>> a = datetime.datetime.now(); >>> print a.strftime('%m'); 01' –

+4

我不明白你的问题。你想把这个月当作INT,它可以是'1,2,3 ... 12'。但是你要求它的形式是'01,02,03,...,12',这是一个字符串。你要哪一个? – Cynical

回答

5
'{:%m}'.format(datetime.datetime.now()) 

似乎工作。

当然,你可以采取不那么直接的办法:

'{:02d}'.format(datetime.datetime.now().month) 

或者你可以使用旧风格的字符串插值:

'%02d' % (datetime.datetime.now().month) 

,但我喜欢的第一个,因为我认为这很酷。 ..


最后,我看不出有什么不对.strftime ...甚至ŧ霍夫你说你尝试过了,它工作得很好,我:

datetime.datetime.now().strftime('%m') 

看起来像什么你要找的是int一个特殊的子类,知道如何“表示”自己当印刷:

class MyInt(int): 
    def __str__(self): 
     return '%02d' % self 

a = MyInt(3) 
print (a) 

但是,我绝对不会推荐使用这种方法,而不是我会建议使用字符串格式化或字符串插值我在整数对象上面做,当你需要代表整数为字符串。

+0

+1。很酷。 – eumiro

+0

@eumiro - '__format__'的魔法:) – mgilson

+0

@mgilson对混合和匹配非常有用 - 所以人们甚至可以访问基础属性:''{.month}'。format(now)'获取回“1”而不是“01”(在这种情况下不需要,但有时是有用的) –