问题标签 [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.

0 投票
2 回答
22049 浏览

python - Django default=timezone.now() 使用“旧”时间保存记录

这个问题已经断断续续地发生了几个星期,这与我的项目中提出的任何问题都不同。

使用的两个模型有一个时间戳字段,默认设置为timezone.now()

这是引发错误标志的序列:


  • 模型 1 在晚上 7:30 创建

  • 模型二是在晚上 10:00 创建的,但在 MySQL 数据库中它存储为晚上 7:30!

创建的每个模型都在晚上 7:30 下保存其时间戳,而不是实际时间,直到经过一定的持续时间。然后设置了一个新时间,以下所有模型都有这个新时间...... Bizzare


一些可能有助于发现问题的额外细节:

我有很多方法可以用来剥离我的时区,tzinfo并用 UTC 替换它们。

这是因为我正在进行timezone.now() - creationTime计算以在项目中创建一个:“模型是很久以前发布的”功能。但是,这确实不应该是问题的原因。

我认为使用datetime.datetime.now()也不会产生任何影响。

无论如何,感谢您的帮助!

0 投票
1 回答
10326 浏览

django - 如何将 Django Admin 中的 DateTimeField 格式化为本地时间?

如何根据本地时间和时区在 Admin 中格式化 DateTimeField?

我的设置.py:

pytz 包已安装。

模型:

还在设置中尝试了一些日期格式,这些都没有改变日期时间对象在管理列表显示中转换为字符串的方式:

在数据库中正确存储日期时间,“2012-11-20 08:57:15.901341+01”。但是在管理员中显示时,它始终是 UTC。

我可以在 ModelAdmin 中准备方法来处理格式,但这并不真正干燥,因为我希望我的管理类看起来像:

0 投票
1 回答
251 浏览

django - 奇怪的时间戳和 timedelta 格式 - 如何转换它们?

我正在使用外部 api,它以一种奇怪的格式返回日期(作为字符串):

我想将它们转换为这种格式:

有没有简单的方法可以做到这一点?我可以将它们转换为 myview或 intemplate

编辑 - - - - - - - - - - - - - - - - - - - - - - - - - ----------

我找到了时间戳的解决方案:

0 投票
2 回答
1547 浏览

python - pytz 替代方案 - 使用操作系统时区作为源?

有没有使用 OS timezone/dst 作为源的更简单的 pytz 替代方案?

欢迎使用 ctypes 包装器或不需要编译的东西。

编辑:野兽

0 投票
1 回答
241 浏览

python - 带有时区字段/模板的日期时间输出奇怪的行为

时区设置settings.py:

记录在数据库表中(postgresql 9.1,带时区的时间戳:

2012-12-19 15:30:51.164368+04

Django 日期过滤器:

在所有这些操作之后,模板中的日期时间文件输出为:

19.12.2012 11:30:51

为什么会发生这种情况?为什么 django 不使用 TZ 信息?

0 投票
1 回答
36937 浏览

python - 带有UTC偏移量的django DateTimeField?

我有一个带有 DateTimeField 的模型:

应允许用户在字段中输入日期、时间和时区信息。这是我想要的格式:

我希望在存储到数据库之前将时间转换为 UTC。所以我尝试为此使用模型表单,但Enter a valid date/time.如果我输入上面的值,它会在该 DateTimeField 上引发验证错误。

这是在 settings.py 中:

我错过了什么?

编辑:

根据 Видул Петров 的建议,尝试使用表单字段:

得到同样的效果:Enter a valid date/time.

编辑 2

看来 datetime 无法处理“%z”参数。这会引发 ValueError:

所以我在控制台中测试了它:

还尝试了pytz:

我真的觉得这应该工作。我是否错过了其他说明的文档的某些部分?

0 投票
1 回答
4329 浏览

python - Django 查询 timezone.now 和 __range 中断的日期范围?

我正在使用 PostgreSQL 数据库 (9.2.2) 运行 Django 1.4.3 和 Python 2.7。我有一个带有“last_view”字段的模型,该字段是用户最后一次查看记录的时间戳。在我的首页上,我想显示上周查看次数最多的十个项目,因此在我的 ListView 中,我尝试将其用于我的查询集:

这在我第一次加载页面时有效。如果我单击任何记录并“查看”它们,则数据库中的 last_view 属性会更新——但如果我随后重新加载页面,则该项目将从“最近查看”列表中消失(由上述查询集形成)。

我认为问题与这篇文章有关,似乎 timezone.now() 的“结束日期”受我启动服务器进程的时间限制。因此,当我在服务器运行后单击链接时,与“now()”相比,“当前时间”在未来并且超出范围(这就是我单击的记录在页面重新加载时消失的原因)。但是,如果我像上面提到的帖子中那样将内容更改为现在,我会在页面加载时收到错误消息:

- 不支持的操作数类型:“function”和“datetime.timedelta”

所以我无法创建我的 startdate 变量。我可以通过将我的查询集从 _range 更改为 _gte 来使其工作,但如果now()的时间戳确实是服务器进程启动的时间而不是“当前时间” ,那么它似乎会随着时间的推移而中断。

关于测试的Django 教程确实显示了now在对日期进行查询时的用法,但是它们没有显示如何从现在减去天数或将其与 timedelta 或日期范围一起使用...

有人可以解释一下如何从实际的当前时间获取时间差,即使用now而不是now()吗?我还想更好地了解使用now()now的局限性。我找不到很好的文档,因为我可以使用 timedelta() 找到的所有示例都引用 timezone.now() 或 datetime.now(),它们有效(只是不是我想要的方式)。

谢谢!

0 投票
3 回答
2925 浏览

python - 已激活时区支持的 Django 项目中南迁移的 DateTimeField 的默认值

我正在为启用时区支持的 Django 1.4.3 项目使用 South 0.7.6 创建模式迁移。

架构迁移包括在一个表上添加DateTimeField(with )。auto_now=True

创建迁移时,South 提示我:

如果我不关心现有行的这个值(我只希望迁移成功而没有警告),那么在这里给出的正确一次性值是什么?

到目前为止,我使用了datetime.datetime.utcnow(). 但是,在应用迁移时我得到以下信息:

South 似乎没有导入 pytz 或 Django 辅助类,那么我如何在这里给出一个时区感知的默认值呢?

0 投票
2 回答
2732 浏览

django - django当地时间

我正在尝试在我的模板中将 utc 时间转换为本地时间,并且出于某种原因这样做:

仍然给了我UTC的价值

然而

使用我的本地时区设置给我价值

将 settings.py 中的 USE_TZ 设置为 True 似乎也无济于事

知道我做错了什么吗?

0 投票
2 回答
6903 浏览

python - 打印日期的 django 时区

我有TIME_ZONE = 'America/Chicago'设置在settings.py中的django项目。

我正在使用这样的日期:

然后在模板中我使用:

我想在不同时区的所有模板中显示日期(例如 +6 小时)。但我希望项目时区为“美国/芝加哥”,并且 datetime.now() 返回的日期在这个时区。所以我只想将所有显示的日期更改为 +6 小时。我怎么能做到这一点?


编辑

好的,这对我有用:

它以+1小时打印日期。但这不起作用:

它打印日期不变。我必须为所有模板全局设置它。我该怎么做?

我总是使用日期过滤器(dateobject|date:"d M Y H:i"),所以也许有什么方法可以全局“挂钩”这个过滤器以将其更改为dateobject|timezone:"Europe/Paris"|date:"d M Y H:i"