首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pytz时区DST问题

pytz时区DST问题
EN

Stack Overflow用户
提问于 2018-11-01 18:34:12
回答 1查看 2.2K关注 0票数 0

我要把两个天真的日期传递给一个表格。然后使用pytz确保将时区设置为EST。然而,它会导致一个错误。我猜这是因为DST的问题。日期和DST令人困惑。有人能教我如何做"DST证明“吗?

代码语言:javascript
复制
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。打印日期的结果如下:

代码语言:javascript
复制
Start date: 2018-11-01 00:00:00-04:00 => America/New_York
End date: 2018-11-05 23:59:59.999999-05:00 => America/New_York

问题是为什么end_date时区-05:00而不是像start_date那样的-04:00

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-01 18:46:59

美国/纽约与美国东部时间不一样。前者根据夏令的变化进行调整。后者固定为东部标准时间。使用:

代码语言:javascript
复制
est = pytz.timezone('EST')
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53107335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档