问题标签 [django-timezone]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Django datetimefield 时区感知 CET
我看到这篇文章是 Django 在将其保存到数据库时破坏了时区感知的 DateTimeField 吗?但它专门使用 pytz 和 mysql 以及我不使用 pytz 并使用 SQLite 的地方(以防它可能会产生影响)。
我有以下型号
我插入数据如下:
打印语句给了我正确的输出,但是一旦我查看数据库(SQLite),我就会看到2016-01-10 23:00:00
我的 django 设置说
检索我得到的数据:
为什么它以另一种格式存储数据,然后我指定,为什么如果 Django 设置为时区感知,我会得到一个 UTC 时区吗?我的意思是在插入日期时间对象之前说:datetime.datetime(2016, 1, 11, 0, 0, tzinfo=<DstTzInfo 'CET' CET+1:00:00 STD>)
更新——
同时,我通过按照此处TIME_ZONE
的 Django 文档中所述 设置数据库找到了解决方法。这为我提供了数据库中正确的时区/日期,但根据该文档,我不应该需要它,因为我的数据库由Django 管理
这允许与以本地时间而不是 UTC 存储日期时间的第三方数据库进行交互。为避免有关 DST 更改的问题,您不应为 Django 管理的数据库设置此选项。
我仍然不清楚为什么 Django在将具有 CET 时区的日期时间对象存储在数据库中时确实将其转换为 UTC,但在检索时却不够聪明以将其转换回 CET 。
python - Django datetime 字段未使用时区更新
问题:-
将 instance.created_at 转换为“US/Alaska”后,输出为 2016-02-06 12:42:22.552000-09:00。但是当我像上面的信号一样使 client_date 和 display_date 等于 alaska 时,它没有保存我新更新的 alaska 值,而是通过添加 5 小时来按 instance.created_at 值更新 client_date 和 display_date。我需要按阿拉斯加时区更新 client_date 和 display_date。
当我调用 instance.save() 时,它在 postgres 数据库中无效。什么问题?为什么它不更新阿拉斯加值?有没有像 django force 这样的东西不更新新值,而是使用默认时区更新值?
python - 升级到 Django 1.9 后的时区问题
我在 Django 1.8.5 中有一个测试,它通过了。这里是
但是在升级到 Django 1.9 后,这个测试会导致这个错误:
以下是相关user_returns_from_vacation
代码:
更新:如果我删除 F() 表达式,并用 for 循环替换它们,这个错误就会消失。像这样:
我注意到在 1.9 的发行说明中,他们为时区简单的数据库添加了一个 TIME_ZONE 属性(比如我运行测试的 SQLite)。我尝试将我的时区添加到数据库配置中,但问题仍然存在。有任何想法吗?这是我在 settings.py 中的时区相关设置
django - Django 1.9 测试 timezone.now()
TL;DR:仅获取当前日期、当前小时和当前分钟,timezone.now()
而不是秒和毫秒。
Django 版本:1.9 Python 版本:3.5.1
在测试我的应用程序模型时,我遇到了一个奇怪的(对我来说)错误。
我有这个模型:
这个单元测试:
测试输出:
如您所见,问题在于timezone.now
调用 frommodels.py
和timezone.now()
调用 form的输出之间的差异test_models.py
。
我找到了这个问题的解决方法。但是存储精确的毫秒或秒并不是我的真正意图。我只想要当前日期和时间(小时和分钟)。我也不想设置default = datetime.date.today()
或类似的东西,因为 django 给出了关于 using only 的警告timezone.now
。
所以我的问题是,我怎样才能只得到当前日期、小时和分钟timezone.now()
?
django - Django 设置 USE_TZ、TIME_ZONE 和 django rest 框架
在 Django 教程中,有一句话描述如下。
时区
...
当 USE_TZ 为 False 时,这是 Django 将存储所有日期时间的时区。当 USE_TZ 为 True 时,这是 Django 用于在模板中显示日期时间并解释在表单中输入的日期时间的默认时区。
...
当 django rest 框架从请求中获取天真的日期时间数据时。那么 Django 会解释这个幼稚的日期时间以了解 TIME_ZONE 设置的本地日期时间吗?如果它是正确的,它是如何工作的?
提前致谢!
django - 替换“tzinfo”并用本地时间打印修改六分钟
我正在创建一个 DataTimeField 没有时区。很快我将“手动”编辑此 TZ,然后要求使用本地 TZ 读取值。修改六分钟见最终结果!
逻辑:
注意:这个想法是分两个阶段发生的。首先,我想在 TimeZone 创作中继续坐在替补席上。然后我想用用户的 TimeZone 向用户展示。在这种情况下,两个用户是同一个区域。
对不起我的英语
根据@user6897474 的回复并付诸实践,我得到了这个解决方案:
在保存之前,我正在获取 POST 和 serializabel 文件的日期时间,请执行以下操作:
替换tzinfo = None,我保证你不会遇到以下错误的问题:
不幼稚的日期时间(tzinfo 已设置)
python - Django 时区和 Postgresql
我知道这个问题不是第一次讨论过,但我遇到了一个问题并且有点困惑。
所以我有一个芹菜任务,应该及时发送提醒。
在我的配置中:
例如我有一个模型,如:
这是一个简化的模型,它有更多字段,但在 DateTime 字段中存在问题。
然后我打开 django shell 并获得如下时间:
它以 UTC 显示正确的时间,例如:
但是,如果我从控制台运行任务并设置打印或尝试使用 ipdb 进行调试,我得到了上面的时间:
所以,我不明白它是怎么回事。当然,在这种情况下,我无法正确比较日期时间。
Django 1.8 和数据库 PostgreSQL
django - 在时区感知日期对象中设置日期格式
我想%d-%m-%Y"
在以下代码中以这种格式获取日期:
在我的 settings.py 中,我有以下设置:
但现在我得到的日期是 2012-12-02。那么%d-%m-%Y
在测试客户端中获取格式日期的正确方法是什么。
django - 如何在特定时区的 Django 中显示日期时间?
我有一个 Django (v1.10.6) 项目,其中包含一些带有日期时间字段的模型,例如:
存储在没有时区信息的 PostgreSQL 数据库中:
postgresql.conf
:
我希望我的应用程序的所有日期都显示在America/Bogota
时区中(它不应该取决于用户的实际时区),所以我的settings.py
文件具有以下配置:
但是当我写
在模板中,它仍然以UTC
格式显示日期。
更新:
我添加了以下中间件,但没有帮助:
更新 2:
它的工作方式如下:
(强制日期在UTC
时区,然后将其传递给没有localize
过滤器的模板)但我不明白为什么 Django 在USE_TZ
设置为True
.
python - Django:将gmt时间存储在数据库表中而不是本地时间
在我的客户模型中,我有两个日期时间字段用于存储创建时间和更新时间。
当我创建一个客户时,它现在将本地时间存储在数据库中,当我通过 API 获取此客户数据时,它以 gmt 时间返回日期时间。这可以。但我想将 gmt 时间保存在数据库中。我认为将本地时间存储在数据库中并不是一个好习惯。
settings.py 文件中的日期设置为
我已经安装了“pip install pytz”模块,我的数据库是 postgresql。