寻找一种更简单的方法来解析Python中的时间戳

时间:2014-05-22 16:32:49

标签: python date

我正在从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 :(得分: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")

Python Doc.

答案 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.

中找到有关此内容的更多信息