您需要定义一个将序列化datetime
对象的辅助函数,并使用default
json.dump 或 json.dumps 的kwarg。请参阅带有重复答案链接的评论。
此外,您还需要考虑是否支持时区感知datetime
对象。以及您是想在序列化期间保留时区还是在序列化之前转换为 UTC。
这是一个假设您要在序列化之前转换为 UTC 的示例。它依赖于python-dateutil库:
from dateutil.tz import tzutc
UTC = tzutc()
def serialize_date(dt):
"""
Serialize a date/time value into an ISO8601 text representation
adjusted (if needed) to UTC timezone.
For instance:
>>> serialize_date(datetime(2012, 4, 10, 22, 38, 20, 604391))
'2012-04-10T22:38:20.604391Z'
"""
if dt.tzinfo:
dt = dt.astimezone(UTC).replace(tzinfo=None)
return dt.isoformat() + 'Z'