从Django的make_aware解析AmbiguousTimeError

 helloboris 发布于 2023-01-30 12:26

我有一个代码如下:

from django.utils.timezone import get_current_timezone, make_aware

make_aware(some_datetime, get_current_timezone())

make_aware呼叫偶尔引发

AmbiguousTimeError: 2013-11-03 01:23:17

我从Django文档中了解到这是一个夏令时问题,而且这个时间戳实际上是模棱两可的.现在我该如何解决它(比如这可能是两个可能的第一个)?

1 个回答
  • 避孕药

    您应该首先使用以下内容避免天真的日期时间:

    from django.utils import timezone
    now = timezone.now()
    

    如果像我一样,你已经有天真的时间,你必须转换,继续阅读!

    Django 1.9+:

    您可以使用以下方法解决AmbiguousTimeError(感谢GeyseR):

    make_aware(some_datetime, get_current_timezone(), is_dst=False)
    

    Django 1.x - 1.8:

    问题是make_aware只调用timezone.localize,将None传递给参数is_dst:

    timezone.localize(value, is_dst=None)
    

    参数is_dst具体用于解决这种模糊的时间错误(http://pytz.sourceforge.net/#tzinfo-api).

    解决方案是自己调用timezone.localize:

    get_current_timezone().localize(some_datetime, is_dst=False)
    

    将is_dst = False设置为两次可能的第一次.is_dst = True将是第二个.

    2023-01-30 12:28 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有