如何在不同区域之间传输时间数据



在我的Django应用程序中,我有一个带有一些日期和时间字段的Task模型:

class Task(models.Model):
    date = models.DateField()
    start_time = models.TimeField(help_text='hh:mm')
    end_time = models.TimeField(help_text='hh:mm')
    # more stuff

我将向一些Android客户端发送一些Task实例,这些客户端的时区(TZ1)与我的服务器时区(TZ2)不同。

start_timeend_time字段必须设置为目标时区(TZ1),也就是说,如果我在Task管理员的start_time字段中输入"13:00",则TZ1中应为"13:00"。

如何将start_timeend_time的值设置为TZ1次?如果我将输入的值保留在默认管理员中,我想时间将设置为服务器时区(TZ2),对吗?

那么,将这些值(通过JSON)发送到Android客户端以获得正确的TZ2时间的最佳格式是什么?

现在我使用Python Datetime的isoformat(),它提供了类似的功能

2013-02-11T13:17:23.811680

但它没有时区数据。。。

这不是处理时区的最佳方式。

最好的方法是尽早将时间转换为UTC,并尽可能晚地将其转换回UTC。

换句话说,如果我在这里输入当前时间为Feb 11, 21:03,它应该永远不会像那样存储。相反,它应该在发生任何其他事情之前更改为UTC。

所以,不管发生什么,它都是正确的。如果我把它发送到内蒙古,它应该一直保持UTC,直到有人想看它。然后,也只有到那时,它才应该被转换(并且仅用于显示)。

在任何必须跨多个时区工作的软件中,遵循这一规则都会为你省去很多悲伤。相信我,我们修复了一个主要的电信公司,因为他们实施了一些可怕的系统,通过电线发送时区,这意味着每个点都必须能够转换到每个时区。

让他们尽快进入UTC,并且只按需返回,节省了大量的时间和金钱。

相关内容

  • 没有找到相关文章

最新更新