Django 如何在不同区域之间传递时间数据?

Django 如何在不同区域之间传递时间数据?,django,datetime,Django,Datetime,在我的Django应用程序中,我有一个带有一些日期和时间字段的任务模型: 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实例,这些客户端将位于

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

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
实例,这些客户端将位于与我的服务器时区(TZ2)不同的时区(TZ1)

必须将
start\u time
end\u time
字段设置为目标时区(TZ1),即,如果我在
Task
admin的
start\u time
字段中输入'13:00',则TZ1中的值应为'13:00'

如何将
start\u time
end\u time
值设置为TZ1次?如果我将输入的值保留在默认管理中,我猜时间将设置为服务器时区(TZ2),对吗

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

现在我使用的是Python Datetime的
isoformat()
,它给出了

2013-02-11T13:17:23.811680

但是它没有时区数据…

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

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

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

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

遵循这条规则,对于任何必须跨多个时区工作的软件来说,都会让你省去很多痛苦。相信我,我们修复了一家大型电信公司,在他们实施了一些可怕的系统,将时区发送到网络上之后,这意味着每个点都必须能够转换到每个时区

尽快将它们引入UTC,并且仅在需要时将其恢复,节省了大量的时间和金钱