pytz时区DST issu

2024-04-19 21:39:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我把两个天真的约会传给一个表格。然后使用pytz确保时区设置为EST。但是,这会导致错误。我猜这是因为DST的问题。日期和夏令时令人困惑。有人能告诉我如何制作“DST证据”吗?在

from rest_framework import serializers
from datetime import datetime
import pytz


class SearchForm(serializers.Serializer):
    start_date = serializers.DateField(required=True)
    end_date = serializers.DateField(required=False)

    def save(self):
        # Doesn't actually save, 
        start_date = self.validated_data['start_date']
        end_date = self.validated_data['end_date']

        # Convert dates to EST timezone
        est = pytz.timezone('America/New_York')
        start_date = datetime.combine(start_date, time.min).astimezone(est)
        end_date = datetime.combine(end_date, time.max).astimezone(est)

        print(f'Start date: {start_date} => {start_date.tzinfo}')
        print(f'End date: {end_date} => {end_date.tzinfo}')

        assert start_date.tzinfo == end_date.tzinfo

        # Filter based on timeframe
        qs = self.filter_timeframe(qs, start_date, end_date)

        return SearchSerializer(qs, many=True)

start_date作为“2018-11-1”传递,end_date作为“2018-11-5”将得到AssertionError。打印出日期会导致:

^{pr2}$

问题是为什么end_date时区-05:00而不是{}像start_date?在


Tags: fromimportselfdatetimedatestartenddst