我正在从API中收集数据,该API返回以下格式的时间戳:' Thu May 22 15:40:24 +0000 2014'但是,我需要将其转换为YYYY-MM -DD我的数据库。我写了一个函数来执行此操作,但它非常难看,我想知道是否有人尝试使用某些Python标准库模块执行此操作,例如datetime
?
time = 'Thu May 22 15:40:24 +0000 2014'
def simplify_date(timestamp):
"""
Converts a timestamp of the format
'Thu May 22 15:40:24 +0000 2014' into a
date string YYYY-MM-DD, e.g., '2014-05-22'.
"""
months = {'Jan':'01', 'Feb':'02', 'Mar':'03',
'Apr':'04', 'May':'05', 'Jun':'06',
'Jul':'07', 'Aug':'08', 'Sep':'09',
'Oct':'10', 'Nov':'11', 'Dec':'12'
}
t = timestamp.split()
date = '%s-%s-%s' %(t[-1], months[t[1]], t[2])
return date
print(simplify_date(time))
2014-05-22
答案 0 :(得分:1)
你可以做这样的事情
import datetime
time = 'Thu May 22 15:40:24 +0000 2014'
new_time = datetime.datetime.strptime(time, "%a %b %d %H:%M:%S +0000 %Y")
print new_time.strftime("%Y-%d-%m")
答案 1 :(得分:1)
您可以使用datetime.datetime.strptime
函数获取datetime
对象,然后可以通过strftime
将其格式化为您想要的任何格式。
>>> ts = "Thu May 22 15:40:24 +0000 2014"
>>> dt = datetime.datetime.strptime(ts, "%a %b %d %H:%M:%S +0000 %Y")
>>> dt.strftime("%Y-%m-%d")
'2014-05-22'
然而,有一点需要注意,strptime
在Python 2中没有很好地处理时区偏移。只要时区是常量(+0000
),你就可以将其硬编码到你的格式字符串。如果您使用的是Python 3,则可以使用%z
来匹配时区偏移量,但在Python 2中无法使用。
另请注意,我在本月使用了%b
- 与月份名称的短版本相匹配。如果API实际上返回长版本(很难说,因为您使用的是您的示例中从未缩写的一个月),您需要%B
代替。
答案 2 :(得分:0)
您正在寻找time.strftime函数。您可以在the python documentation on strftime.
中找到有关此内容的更多信息