【问题标题】:Get system time w/timezone in Django bypassing default timezone在 Django 中绕过默认时区获取带时区的系统时间
【发布时间】:2017-01-11 13:40:36
【问题描述】:

只要我使用普通的 Python shell,datetime.datetime.now() 命令就可以很好地获取系统的本地(非 UTC)时间。

但我正在开发一个 Django 项目,其中时区在 settings.pyTIME_ZONE = 'UTC' 中更改。

我尝试了从django.utils timezonetzlocal 模块的许多解决方案,但没有一个有效。它们都返回不正确或 UTC 时间。

如果我将 settings.py 中的时区更改为我的本地时区,所有解决方案都可以工作。 但我不能这样做,所以有什么方法可以绕过 @ 中的默认时区选项987654327@?或者settings.py的时区可以自动更新吗?如果我删除TIME_ZONE 行,我不知道为什么,但它似乎得到了一个随机时区。

编辑 -

我知道可以使用 pytz 手动输入时区,但我不想这样做。我想获取本地系统时区,但没有 Django 对时区的审核。

谢谢。

【问题讨论】:

    标签: python django date datetime


    【解决方案1】:

    Django 似乎将其时区放入 TZ 环境变量中。尝试del os.environ['TZ'],然后使用 tzlocal。

    【讨论】:

      【解决方案2】:

      要获取不同时区的时间,请使用以下代码:

      # create another timezone instance
      import pytz
      new_york_tz = pytz.timezone("America/New_York")
      
      # get the current date and time, with the timezone set in your settings.py
      from django.utils import timezone
      d = timezone.now()
      print(d)
      
      # get the date and time in your other timezone
      d2 = new_york_tz.normalize(d)
      print(d2)
      

      见:https://docs.djangoproject.com/en/1.10/topics/i18n/timezones/#naive-and-aware-datetime-objects

      【讨论】:

      • 我知道这可以做到,但我不想手动输入时区。该应用程序应该能够从计算机获取默认时区,以某种方式绕过 Django 的时区设置。
      • "没有 Django 对时区的审核。"
      • datetime.datetime.now(dateutil.tz.tzlocal()) 适合你吗?
      • 不... dateutil.tz.tzlocal() 只是返回 tzlocal()
      • 不,因为它被 Django 的干预覆盖了。
      【解决方案3】:

      您可以使用 Javascript 获取从浏览器到 UTC 的时区偏移量。这是代码。

      var d = new Date()
      var n = d.getTimezoneOffset()
      alert(n)
      

      结果是分钟数。例如,您将在洛杉矶获得 480。如果结果为负数,则时区应为“西”,相反,正数表示“东”。 AND 1 timezone = 60 分钟,所以,你可以算出 480 / 60 = 8。那么结果是洛杉矶在西部 8 时区。然后就可以使用 pytz 来获取当地时间了。

      【讨论】:

      • 但这取决于客户端。据我了解 OP 想要 server 的本地时间(区域)的问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-14
      • 1970-01-01
      • 2022-11-22
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多