如何处理 django 不同位置的用户的日期时间?
How to handle datetimes for users in different locations django?
我有一个使用 Django 和 Django REST Framework 构建的应用程序。用户可以将某些对象添加到数据库中并为其设置到期日期。
其他用户将从数据库中检索那些添加的项目,并将显示在客户端。创建对象和检索对象的用户可能位于世界不同的地方。
我计划以 UTC 格式存储日期时间。我如何确保日期时间在存储之前采用 UTC 格式,以及当用户尝试检索其中一项时,它是否正确显示在他们的时区中?
我在想什么
我想我应该将它转换为 UTC(客户端)并将其保存到数据库中,然后当用户检索该对象时,我将 return 它以 UTC(从数据库)和将时间更改为用户的本地时间客户端。这是一个好方法吗?
简而言之:如果您依赖客户知道正确的时区,那么您的解决方案是一个很好的解决方案。
一些注意事项:
Django 不需要您将任何内容转换为 UTC 进行存储,它会为您完成。也就是说,在客户端获取 UTC 值是有意义的(并且是 Flutter API 唯一明智的选择)。
Web 应用程序的最佳实践是允许用户将他们的时区存储为用户首选项;这样一来,他们就可以控制时区,而不是受制于他们碰巧使用的任何计算机和浏览器。对于移动应用程序来说,这可能不是一个问题,因为人们可以假定人们在使用自己的设备。
如果您这样做,最好的方法是让 Django 在序列化期间本地化时间本身(类似于 this)。
我有一个使用 Django 和 Django REST Framework 构建的应用程序。用户可以将某些对象添加到数据库中并为其设置到期日期。 其他用户将从数据库中检索那些添加的项目,并将显示在客户端。创建对象和检索对象的用户可能位于世界不同的地方。
我计划以 UTC 格式存储日期时间。我如何确保日期时间在存储之前采用 UTC 格式,以及当用户尝试检索其中一项时,它是否正确显示在他们的时区中?
我在想什么
我想我应该将它转换为 UTC(客户端)并将其保存到数据库中,然后当用户检索该对象时,我将 return 它以 UTC(从数据库)和将时间更改为用户的本地时间客户端。这是一个好方法吗?
简而言之:如果您依赖客户知道正确的时区,那么您的解决方案是一个很好的解决方案。
一些注意事项:
Django 不需要您将任何内容转换为 UTC 进行存储,它会为您完成。也就是说,在客户端获取 UTC 值是有意义的(并且是 Flutter API 唯一明智的选择)。
Web 应用程序的最佳实践是允许用户将他们的时区存储为用户首选项;这样一来,他们就可以控制时区,而不是受制于他们碰巧使用的任何计算机和浏览器。对于移动应用程序来说,这可能不是一个问题,因为人们可以假定人们在使用自己的设备。
如果您这样做,最好的方法是让 Django 在序列化期间本地化时间本身(类似于 this)。