web-dev-qa-db-ja.com

コロンでタイムゾーンを解析する方法

datetime.strptimeを使用してタイムゾーンを「+00:00」形式で解析する方法はありますか?例えば:

Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:43:06) [MSC v.1600 32 bit (In
tel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from datetime import datetime
>>> datetime.strptime("12:34:56+0000", "%X%z")
datetime.datetime(1900, 1, 1, 12, 34, 56, tzinfo=datetime.timezone.utc)
>>> datetime.strptime("12:34:56+00:00", "%X%z")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python34\lib\_strptime.py", line 500, in _strptime_datetime
    tt, fraction = _strptime(data_string, format)
  File "C:\Python34\lib\_strptime.py", line 337, in _strptime
    (data_string, format))
ValueError: time data '12:34:56+00:00' does not match format '%X%z'

何か案は?

28
dijxtra

現在、これにはcureはありません。ここに説明があります https://bugs.python.org/issue1587 =より正確には、ここ: https://bugs.python.org/msg169952 。しかし、あなたはこの方法でこの問題を無効にすることができます:

from datetime import datetime
d = "2015-04-30T23:59:59+00:00"
if ":" == d[-3:-2]:
    d = d[:-3]+d[-2:]
print(datetime.strptime(d, "%Y-%m-%dT%H:%M:%S%z"))
16
Srđan Popić

もう1つの解決策は、dateutilライブラリを使用することです。

from dateutil import parser

mystr = '2015-04-30T23:59:59+00:00'

x = parser.parse(mystr)

# 2015-04-30 23:59:59+00:00
4
jpp

パンダを使用することもできます:

import pandas as pd
t = pd.to_datetime("2015-04-30T23:59:59+00:00")

これはタイムスタンプオブジェクトを提供します:

t.hour
Out[139]: 14

t.day
Out[140]: 30
0
halfdanrump