2013-01-02 36 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」(在這種情況下不需要,但有時是有用的) –