ฉันเพิ่งสร้างประเภทข้อมูลสำหรับข้อมูลวันที่ของฉัน ซึ่งส่งคืนออบเจ็กต์ datetime.datetime
นี่คือรหัส:
import datetime
class Date:
def __new__(cls, dateTime, *args, **kwargs):
return datetime.datetime.strptime(dateTime, "%Y-%m-%dT%H:%M:%S.%f%z")
ดังนั้นทุกครั้งที่ฉันให้ ISO-8601
คลาสนี้ ก็ควรส่งคืนอ็อบเจ็กต์ datetime จากสตริง...
ตัวอย่างหลาม 3.7:
Date("2018-12-09T08:56:12.189Z")
# Returns => datetime.datetime(2018, 12, 9, 8, 56, 12, 189000, tzinfo=datetime.timezone.utc)
มันใช้งานได้ดี แต่เมื่อฉันใช้กับ Python 3.6 หรือ Python 3.5:
# Python 3.5 Traceback
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.5/_strptime.py", line 510, in _strptime_datetime
tt, fraction = _strptime(data_string, format)
File "/usr/lib/python3.5/_strptime.py", line 343, in _strptime
(data_string, format))
ValueError: time data '2018-12-09T08:56:12.189Z' does not match format '%Y-%m-%dT%H:%M:%S.%f%z'
# Python 3.6 Traceback
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.6/_strptime.py", line 565, in _strptime_datetime
tt, fraction = _strptime(data_string, format)
File "/usr/lib/python3.6/_strptime.py", line 362, in _strptime
(data_string, format))
ValueError: time data '2018-12-09T08:56:12.189Z' does not match format '%Y-%m-%dT%H:%M:%S.%f%z'
มันแปลกมาก สาเหตุของปัญหาคืออะไร? ฉันจะแก้ไขได้อย่างไร?