寻找一种更简单的方法在Python中解析时间戳
我正在从一个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
3 个回答
0
你在寻找time.strftime这个函数。想了解更多信息,可以查看Python关于strftime的文档。
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
你可以使用 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'
不过,有一点需要注意的是,在 Python 2 中,strptime
对时区偏移的处理不是很好。只要时区是固定的(比如 +0000
),你可以直接把它写进你的格式字符串里。如果你使用的是 Python 3,可以用 %z
来匹配时区偏移,但在 Python 2 中这样做是无效的。
另外,我在上面用 %b
来表示月份,这个是匹配月份名称的 简写 版本。如果 API 实际上返回的是完整的月份名称(很难判断,因为你用的那个月份在例子中是从来不缩写的),你就需要用 %B
了。