繁体   English   中英

如何在Django Rest Framework中将Python日期时间对象转换为特定时区?

[英]How to convert Python datetime object to specific timezone in Django Rest Framework?

我正在使用Djangodjango-rest-framework实现api的现有代码库。 当您发布这样的日期时间时:

2019-06-21T10:35:46+02:00

它存储在UTC中为2019-06-21 08:35:46+00 (按预期)。 这是因为我有USE_TZ = True

当我提供数据时,我也希望再次将其转换为本地化格式( 2019-06-21T10:35:46+02:00 )。 因此,按照此技巧,我将其实现为:

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

您需要在settings.py 设置TIME_ZONE 只需在fields列表中添加'timestamp'使用。

为了明确起见,您还可以编写

timestamp = serializers.DateTimeField(format='iso-8601')

请注意,我假设您正在为所有响应使用一个主要时区。 如果您需要返回用户发送的时区的时间,请参阅此答案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM