【问题标题】:How do I find the date format ? [duplicate]如何找到日期格式? [复制]
【发布时间】:2016-05-10 17:59:08
【问题描述】:

我收到一个 json 打印时间数据 '2016-04-15T02:19:17+00:00' 我似乎无法弄清楚这个 unicode 字符串的格式。

我需要找出当时和现在之间的时间差。第一步是将字符串转换为结构化格式,我无法找到格式

fmt='"%Y-%m-%d %H:%M:%S %Z' 
#fmt='%Y-%m-%d %H:%M:%S.%f' 
print datetime.datetime.strptime(result_json['alert_time'], fmt)

我不断收到异常,它的格式不一样

time data '2016-04-15T02:19:17+00:00' does not match format '"%Y-%m-%d %H:%M:%S %Z'

【问题讨论】:

    标签: python datetime


    【解决方案1】:

    您的格式存在一些问题。首先,它有一个双引号"。其次,您需要在日期和时间之间包含T。第三,时区偏移不标准。这是可以工作的代码:

    print datetime.datetime.strptime('2016-04-15T02:19:17', '%Y-%m-%dT%H:%M:%S')
    

    如果您的alert_time 始终是格林威治标准时间,您可以在调用strptime 之前关闭时区。

    【讨论】:

    • 我不断收到:未转换的数据仍然存在:+00:00。有没有优雅的方法来摆脱异常?
    • @Victor: "在调用 strptime 之前关闭时区。"
    【解决方案2】:

    布伦特的答案是更安全、更快捷的选择,而不是让事情发生在幕后。但是我将datetime 作为与我想测试的主要问题无关的令人沮丧的瓶颈的次数,我还要指出dateparser here 对我来说还没有错,并且会采取大量的输入。

    import dateparser
    import datetime
    
    date = '2016-04-15T02:19:17+00:00'
    
    date_parser_format = dateparser.parse(date)
    datetime_format = datetime.datetime.strptime('2016-04-15T02:19:17', '%Y-%m-%dT%H:%M:%S')
    
    print date_parser_format
    print datetime_format
    

    【讨论】:

      猜你喜欢
      • 2013-07-10
      • 1970-01-01
      • 2013-08-21
      • 1970-01-01
      • 2018-05-05
      • 1970-01-01
      • 1970-01-01
      • 2013-01-31
      相关资源
      最近更新 更多