我正在研究一个现有的代码库,该代码库使用Django和django-rest-framework实现api。当您发布这样的日期时间时:
2019-06-21T10:35:46+02:00
它以2019-06-21 08:35:46+00
的形式存储在UTC中(如预期)。这是因为我有USE_TZ = True
。
当我提供数据时,我也希望再次将其转换为本地化格式(2019-06-21T10:35:46+02:00
)。因此,在this tip之后,我是这样实现的:
class DateTimeFieldWihTZ(serializers.DateTimeField):
""" Class to make output of a DateTime Field timezone aware """
def to_representation(self, value):
value = timezone.localtime(value)
return super(DateTimeFieldWihTZ, self).to_representation(value)
class PeopleMeasurementSerializer(HALSerializer):
class Meta:
model = PeopleMeasurement
fields = [
'_links',
'id',
'timestamp',
'sensor',
'count'
]
timestamp = DateTimeFieldWihTZ(format='%Y-%m-%d %H:%M:%S')
但这用作2019-06-21 08:35:46
。如何再次将其用作2019-06-21T10:35:46+02:00
?
答案 0 :(得分:0)
您需要settings.py
中的set TIME_ZONE
。只需将'timestamp'
放在fields
列表中,即可使用。
为明确起见,您还可以编写
timestamp = serializers.DateTimeField(format='iso-8601')
请注意,我假设您对所有答复都使用一个主要时区。如果您需要返回用户发送时区的时间,请参见this answer。