def format(self, value, property, context):
if isinstance(value, datetime.datetime):
if value.tzinfo:
# DST ? ???? ???.
value = value.replace(tzinfo=timezone.utc) - value.utcoffset()
return int(calendar.timegm(value.timetuple())) + (value.microsecond / 1000000.0)
elif isinstance(value, datetime.time):
seconds = value.hour * 3600 + value.minute * 60 + value.second
if value.tzinfo:
# DST ? ???? ???.
seconds -= value.utcoffset().total_seconds()
return seconds % 86400 + (value.microsecond / 1000000.0)
elif isinstance(value, datetime.date):
return calendar.timegm(value.timetuple())
else:
raise ValueError()
评论列表
文章目录