Python의 .isoformat() 문자열을 datetime 개체로 다시 변환하는 방법
따라서 Python 3에서는 .isoformat()으로 ISO 8601 날짜를 생성할 수 있지만, Python 자체의 날짜 시간 지시어가 제대로 일치하지 않기 때문에 isoformat()으로 만든 문자열을 날짜 시간 개체로 다시 변환할 수 없습니다.즉, 05:00 대신 %z = 0500입니다(이는 .isoformat()에서 생성됨).
예:
>>> strDate = d.isoformat()
>>> strDate
'2015-02-04T20:55:08.914461+00:00'
>>> objDate = datetime.strptime(strDate,"%Y-%m-%dT%H:%M:%S.%f%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 '2015-02-04T20:55:08.914461+00:00' does not match format '%Y-%m-%dT%H:%M:%S.%f%z'
Python의 strptime 문서에서: (https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior) .
+HHMM 또는 -HHHMM 형식의 %z UTC 오프셋(객체가 순진한 경우 빈 문자열).(공백), +0000, -0400, +1030
즉, Python은 자체 문자열 형식 지정 지침도 준수하지 않습니다.
데이트 시간이 파이썬에서 이미 끔찍하다는 것을 알지만, 이것은 비합리적인 것을 넘어 단순한 어리석음의 땅으로 정말로 넘어갑니다.
이건 사실이 아니라고 말해주세요.
파이썬 3.7+
Python 3.7 이후에는 방법이 있습니다.datetime.fromisoformat()
그것은 정확히 정반대입니다.isoformat()
.
구 파이썬
이전 Python을 사용하는 경우 다음 질문에 대한 현재의 최상의 "솔루션"입니다.
pip install python-dateutil
그러면...
import datetime
import dateutil
def getDateTimeFromISO8601String(s):
d = dateutil.parser.parse(s)
return d
사용해 보십시오.
>>> def gt(dt_str):
... dt, _, us = dt_str.partition(".")
... dt = datetime.datetime.strptime(dt, "%Y-%m-%dT%H:%M:%S")
... us = int(us.rstrip("Z"), 10)
... return dt + datetime.timedelta(microseconds=us)
용도:
>>> gt("2008-08-12T12:20:30.656234Z")
datetime.datetime(2008, 8, 12, 12, 20, 30, 656234)
언급URL : https://stackoverflow.com/questions/28331512/how-to-convert-pythons-isoformat-string-back-into-datetime-object
'programing' 카테고리의 다른 글
개발 환경에서 윈도우즈 7 x64의 C#에서 오라클 데이터베이스에 연결하는 방법 (0) | 2023.09.04 |
---|---|
동적 열에서 하위 데이터를 가져오는 방법은 무엇입니까? (0) | 2023.09.04 |
jQuery를 사용하여 버튼으로 모든 확인란을 선택/선택 취소하려면 어떻게 해야 합니까? (0) | 2023.09.04 |
장고 URL 리디렉션 (0) | 2023.09.04 |
PHP: 문자열을 각 문자에 대해 배열로 분할 (0) | 2023.09.04 |