2012-02-28 134 views
1

我有一段腳本已經寫好,我需要更改日期,當腳本運行時它輸出此消息我如何將日期轉換爲日/月/年(20/Jan/2012)在python中

output_messaging("*** DATA REFRESH FOR STREETWORKS DATA EXECUTED ON " + 
    str(datetime.date.today().day) + "/" + str(datetime.date.today().month) + "/" +    
    str(datetime.date.today().year) + " AT " + str(datetime.datetime.now().hour) + ':' + 
    str(datetime.datetime.now().minute) + ':' + str(datetime.datetime.now().second) + " ***\n\n") 

其中給出

*** DATA REFRESH FOR STREETWORKS DATA EXECUTED ON 20/2/2012 AT 18:3 *** 

我需要轉換爲

20/Feb/2012日期,我該怎麼做呢?

+1

使用time.strftime。 [見此帖] [1] [1]:http://stackoverflow.com/questions/4855406/how-to-convert-a-time-to-a-string – 2012-02-28 16:37:13

回答

2

使用strftime本 - 這是不是做了一堆定製級聯的方式更容易。有一個表格格式約定here

>>> s = "*** DATA REFRESH FOR STREETWORKS DATA EXECUTED ON "\ 
...  "%d/%b/%y AT %H:%M:%S ***\n\n" 
>>> datetime.datetime.now().strftime(s) 
'*** DATA REFRESH FOR STREETWORKS DATA EXECUTED ON 28/Feb/12 AT 11:44:03 ***\n\n' 

由於eumiro的回答表明,你也可以稍微修改格式字符串反轉上面的調用就像這樣:

>>> s = "*** DATA REFRESH FOR STREETWORKS DATA EXECUTED ON "\ 
...  "{0:%d/%b/%y} AT {0:%H:%M:%S} ***\n\n" 
>>> s.format(datetime.datetime.now()) 
'*** DATA REFRESH FOR STREETWORKS DATA EXECUTED ON 28/Feb/12 AT 13:41:10 ***\n\n' 

這工作,因爲format只是調用(令人震驚的下記錄) __format__方法datetime.datetime對象。例如:

>>> datetime.datetime.now().__format__('The current month is %B') 
'The current month is February' 

這適用於其他類型太:

>>> (16).__format__('x') 
'10' 

更多關於__format__,請參閱日期格式PEP 3101

+0

看起來像一個正確的解決方案,所以從我+1。如果您懷疑有人投票不當,您可以舉報主持人的注意。 – 2012-02-28 17:01:11

+0

@MarkRansom,對於它的價值,我也想知道eumiro的方法是如何工作的。以上是我通過一些調查發現的。但是我對這部分Python的記錄有多麼不滿意。 – senderle 2012-02-28 18:50:41

+0

感謝senderle,讓它工作。 – MapMan 2012-02-29 10:03:12

0
import datetime 
print datetime.datetime.now().strftime('%d/%b/%Y') 
# 28/Feb/2012 
2
output_messaging("*** DATA REFRESH FOR STREETWORKS DATA EXECUTED ON {0:%d/%b/%Y} AT {0:%H:%M} ***".format(datetime.datetime.now())) 

打印

*** DATA REFRESH FOR STREETWORKS DATA EXECUTED ON 28/Feb/2012 AT 17:41 *** 

More information about datetime formatting

+1

我會愛知道字符串格式如何最終調用'strftime'。 – 2012-02-28 16:58:36

1
>>> from datetime import date 
>>> day = date.today() 
>>> day.strftime('%d/%b/%y') 
'28/Feb/12' 
+0

誰downvote? – Fred 2012-02-28 16:48:23

相關問題