使用Python将字符串转换为格式化的日期时间字符串

时间:2010-02-23 09:29:24

标签: python datetime time strftime strptime

我正在尝试将字符串“20091229050936”转换为“2009年12月29日(UTC)时间:05:09”

>>>import time
>>>s = time.strptime("20091229050936", "%Y%m%d%H%M%S")
>>>print s.strftime('%H:%M %d %B %Y (UTC)')

给出 AttributeError: 'time.struct_time' object has no attribute 'strftime'

显然,我犯了一个错误:时间错了,这是一个日期时间的对象!它有一个日期一个时间组件!

>>>import datetime
>>>s = datetime.strptime("20091229050936", "%Y%m%d%H%M%S")

给出 AttributeError: 'module' object has no attribute 'strptime'

我打算如何将字符串转换为格式化的日期字符串?

5 个答案:

答案 0 :(得分:41)

对于datetime个对象,strptimedatetime类的static method,而不是datetime模块中的自由函数:

>>> import datetime
>>> s = datetime.datetime.strptime("20091229050936", "%Y%m%d%H%M%S")
>>> print s.strftime('%H:%M %d %B %Y (UTC)')
05:09 29 December 2009 (UTC)

答案 1 :(得分:11)

time.strptime返回time_struct; time.strftime接受time_struct作为可选参数:

>>>s = time.strptime(page.editTime(), "%Y%m%d%H%M%S")
>>>print time.strftime('%H:%M %d %B %Y (UTC)', s)

给出 05:09 29 December 2009 (UTC)

答案 2 :(得分:1)

对我而言,这是最好的,它也适用于Google App Engine

显示UTC-4的示例

import datetime   
UTC_OFFSET = 4
local_datetime = datetime.datetime.now()
print (local_datetime - datetime.timedelta(hours=UTC_OFFSET)).strftime("%Y-%m-%d %H:%M:%S")

答案 3 :(得分:1)

from datetime import datetime
s = datetime.strptime("20091229050936", "%Y%m%d%H%M%S")
print("{:%H:%M %d %B %Y (UTC)}".format(s))

答案 4 :(得分:1)

您可以使用easy_date轻松实现:

import date_converter
my_datetime = date_converter.string_to_string("20091229050936", "%Y%m%d%H%M%S", "%H:%M %d %B %Y (UTC)")