如何处理不同位置 django 的用户的日期时间?

问题描述

我有一个使用 Django 和 Django REST Framework 构建的应用程序。用户可以将某些对象添加数据库并为其设置到期日期。 其他用户将从数据库中检索这些添加的项目,并将在客户端显示。创建对象的用户和检索对象的用户可能位于世界的不同地方。

我计划以 UTC 格式存储日期时间。如何在存储之前确保日期时间采用 UTC 格式,以及当用户尝试检索其中一项时,它是否正确显示在他们的时区中?

我在想什么

我想我应该将其转换为 UTC(客户端)并将其保存到数据库中,然后当用户检索该对象时,我将以 UTC(从数据库中)返回它并将时间更改为用户的本地时间客户端。这是一个方法吗?

解决方法

简而言之:如果您依赖客户知道正确的时区,那么您的解决方案是一个不错的解决方案。

一些注意事项:

  • Django 不需要您将任何内容转换为 UTC 进行存储,它会为您完成。也就是说,在客户端获取 UTC 值是有道理的(并且确实是 Flutter API 的唯一明智选择)。

  • Web 应用程序中的最佳实践是允许用户将他们的时区存储为用户首选项;这样,他们就可以控制时区,而不是受他们碰巧使用的任何计算机和浏览器的支配。对于移动应用程序来说,这可能不是什么问题,人们可以假设人们在使用他们自己的设备。

    如果您这样做,最好的方法是让 Django 在序列化期间本地化时间本身(类似于 this)。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...