【问题标题】:Converting utc time string to datetime object将UTC时间字符串转换为日期时间对象
【发布时间】:2012-03-15 02:04:08
【问题描述】:

我正在使用 Paypal API,并获得以下格式的时间戳。我尝试使用 strptime 将其解析为 datetime 对象,但出现以下错误:

(Pdb) datetime.strptime('2012-03-01T10:00:00Z','%Y-%M-%dT%H:%M:%SZ')
*** error: redefinition of group name 'M' as group 5; was group 2

另外,由于这种格式应该是相当标准的格式,难道没有可用的函数吗?

编辑:

好的,似乎是一个错字。第一个 %M 应该是 %m

【问题讨论】:

    标签: python python-2.7


    【解决方案1】:

    dateutil 的解析器是你的朋友。

    你必须 pip install dateutil 但你已经保存了一袋又一袋的日期转换代码:

    pip install python-dateutil
    

    你可以这样使用它。

    from dateutil import parser
    ds = '2012-03-01T10:00:00Z' # or any date sting of differing formats.
    date = parser.parse(ds)
    

    你会发现你可以用这个解析器处理几乎任何日期字符串格式,你会得到一个很好的标准 python 日期返回

    【讨论】:

    • 请投票并将其更改为您最喜欢的答案,然后请@arno_v
    【解决方案2】:

    看起来您正在混合使用%M(分钟)和%m(月)。

    【讨论】:

      【解决方案3】:

      问题是你使用了两次%M。几个月使用%m

      >>> datetime.strptime('2012-03-01T10:00:00Z','%Y-%m-%dT%H:%M:%SZ')
      datetime.datetime(2012, 3, 1, 10, 0)
      

      【讨论】:

      • 为什么要使用时间?在这里使用日期时间有意义吗?因为这既是日期也是时间。
      • @arno_v:我明白了,您正在使用类方法datetime.strptime。对此感到抱歉。
      【解决方案4】:

      你有一个错字。 %M 被使用了两次。您打算在本月使用 %m。来自docs

      %m  Month as a decimal number [01,12].   
      %M  Minute as a decimal number [00,59].
      

      【讨论】:

        猜你喜欢
        • 2015-10-24
        • 2011-06-13
        • 1970-01-01
        • 2016-12-12
        • 2014-11-18
        • 1970-01-01
        • 2014-12-13
        相关资源
        最近更新 更多