ในบางครั้งที่เราต้องการแปลง datetime string ด้วย ISO-8601 format (เช่น 2019-08-17T00:17+0700) ด้วยฟังก์ชัน datetime.strptime() เราจะได้ error บ่นมาประมาณว่า
'z' is a bad directive in format '%Y-%m-%dT%H:%M:%S.%f%z'
ทั้งนี้ทั้งนั้น ให้ลองสังเกตดีๆ จะพบว่า มีความแตกต่างเล็กๆ น้อยๆ ในการใส่ค่า เช่น 0700 มีการใส่เป็น 07:00 แทน เป็นสาเหตุทำให้เกิด error ขึ้น
เนื่องจากตัวฟังก์ชันนี้ไม่ยืดหยุ่นพอในการจัดการกับความแตกต่างของ format ทางแก้ง่ายๆ (หากคุณใช้ django) คือเรียกใช้ library ตัวนี้แทน
from django.utils.dateparse import parse_datetime
parse_datetime('2019-08-17T00:17+07:00')
Reference: https://stackoverflow.com/questions/20194496/iso-to-datetime-object-z-is-a-bad-directive