如何处理不同位置的用户的datetimes ?



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

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

我在想什么

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

简单地说:如果您依赖于客户端知道正确的时区,那么您的解决方案是好的。

注意事项:

  • Django不需要你把任何东西转换成UTC来存储,它会为你做的。也就是说,在客户端上获取UTC值是有意义的(并且实际上是Flutter API唯一相同的选择)。

  • web应用程序的最佳实践是允许用户将其时区存储为用户首选;这样,他们就可以控制时区,而不是受他们使用的任何计算机和浏览器的摆布。对于移动应用程序来说,这可能不是一个问题,因为人们可以假设使用自己的设备。

    如果你这样做,最好的方法是让Django在序列化过程中本地化时间本身(就像这样)。

最新更新