我现在正在审视让django应用程序时区知道的过程。最初,TIME_ZONE
设置设置为“America / Los_Angeles”,但我认为将其设为“UTC”可能更为标准。
当我在Javascript中将datetime
呈现给网页时,我发现了一些非预期的行为(start_date
是我在视图中先前定义的天真datetime
):
django查看:cal_start_date = time.mktime(start_date.timetuple())
js:startDate = new Date(response.cal_start_date * 1000)
根据我在settings.py中设置的TIME_ZONE
,我得到cal_start_date
的不同时间戳,这是可以理解的:time.mktime
方法返回表示秒数的浮点数从纪元(1970年1月1日)开始。但是,自纪元以来的秒数取决于我们所指的时区。我相信time.mktime
会自动将TIME_ZONE
设置作为用于此引用的设置,对吗?
一般来说,更改django TIME_ZONE
设置是不好的做法?
答案 0 :(得分:0)
看看this answer:
time.mktime()假设传递的元组是在当地时间, calendar.timegm()假设它是GMT / UTC。取决于 解释元组代表不同的时间,所以功能 返回不同的值(自纪元以来的秒数基于UTC)。
值之间的差异应该等于时区 抵消当地时区。
我还建议您确保settings.py
中的USE_TZ = True