我如何将日期转换为日/月/年(20/Jan/2012)在python中
我有一段脚本已经写好,我需要更改日期,当脚本运行时它输出此消息我如何将日期转换为日/月/年(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
日期,我该怎么做呢?
使用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
import datetime
print datetime.datetime.now().strftime('%d/%b/%Y')
# 28/Feb/2012
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 ***
我会爱知道字符串格式如何最终调用'strftime'。 – 2012-02-28 16:58:36
>>> from datetime import date
>>> day = date.today()
>>> day.strftime('%d/%b/%y')
'28/Feb/12'
谁downvote? – Fred 2012-02-28 16:48:23
使用time.strftime。 [见此帖] [1] [1]:http://stackoverflow.com/questions/4855406/how-to-convert-a-time-to-a-string – 2012-02-28 16:37:13