1

我现在正在经历使 django 应用程序时区感知的过程。最初,TIME_ZONE设置设置为“America/Los_Angeles”,但我认为将其设置为“UTC”可能更标准。

datetime当我像这样在 Javascript 中将 a 渲染到网页时,我发现了一些意外行为(这是我在视图前面定义start_date的天真):datetime

django视图:cal_start_date = time.mktime(start_date.timetuple())

js:startDate = new Date(response.cal_start_date * 1000)

根据TIME_ZONE我在 settings.py 中设置的值,我得到一个不同的时间戳,cal_start_date这是可以理解的:该time.mktime方法返回一个浮点数,表示自纪元 (01/01/1970) 以来的秒数。但是,自纪元以来的秒数取决于我们所指的时区。我相信这time.mktime会自动将TIME_ZONE设置作为用于此参考的设置,对吗?

一般来说,更改 djangoTIME_ZONE设置是不好的做法吗?

4

1 回答 1

0

看看这个答案

time.mktime()假定传递的元组是本地时间, calendar.timegm()假定它是 GMT/UTC。根据解释,元组代表不同的时间,因此函数返回不同的值(自纪元基于 UTC 以来的秒数)。

值之间的差异应等于您当地时区的时区偏移量。

我还建议您确保USE_TZ = True在您的 settings.py

于 2014-11-02T17:07:55.640 回答