22

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

>>>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'

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

4

5 回答 5

41

对于datetime对象,strptime是类的静态方法datetime而不是模块中的自由函数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)
于 2010-02-23T09:39:08.337 回答
13

time.strptime返回一个time_structtime.strftime接受 atime_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)

于 2010-02-23T09:29:44.783 回答
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")
于 2011-07-25T01:59:22.200 回答
1
from datetime import datetime
s = datetime.strptime("20091229050936", "%Y%m%d%H%M%S")
print("{:%H:%M %d %B %Y (UTC)}".format(s))
于 2014-04-03T15:52:22.500 回答
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)")
于 2015-05-10T05:42:09.230 回答