【问题标题】:Django returns bad timezoneDjango 返回错误的时区
【发布时间】:2013-06-03 16:56:40
【问题描述】:

我有一个问题,即 AWS EC2 Ubuntu 12.04 服务器上的 Django 使用以下视图返回 UTC 时间戳:

import time
from django.utils.datetime_safe import datetime

def currentTime(request):
    return HttpResponse(json.dumps({"time": int(time.mktime(datetime.now().timetuple())) }), mimetype="application/json")

在撰写本文时为 1370604628。 Ubuntu 设置为 EDT 时区,Django 的 settings.py 设置为“America/New_York”。更奇怪的是 Javascript 在使用 new Date() 时返回 UTC 时区;

我的 USE_TZ 设置为 False,但我尝试将其设置为 True,但没有成功。

服务器是 nginx,它代理到 uWSGI。有谁知道如何解决这个问题?或者另一种在客户端JS和django之间同步时间的方法?

【问题讨论】:

    标签: javascript django datetime timezone


    【解决方案1】:

    我不熟悉 Django 的具体细节,但我可以告诉你,一般来说,整数时间戳,例如 1370604628总是采用 UTC。

    您从 Python 获得的值是自 1970 年 1 月 1 日以来的 秒数 UTC。在 JavaScript 中,该数字将以 毫秒 表示,因此您必须乘以 1000。但零线位于同一点 - 1970 年 1 月 1 日 UTC

    您的时区设置是什么并不重要。这些值始终采用 UTC。如果要合并时区信息,则必须使用字符串表示,而不是整数。

    【讨论】:

    • 我意识到 time.mktime() 返回 UTC,所以我查找并使用时区查找,因此它添加/删除 X 小时。
    猜你喜欢
    • 2013-11-05
    • 1970-01-01
    • 2015-11-24
    • 2013-04-20
    • 1970-01-01
    • 1970-01-01
    • 2014-12-27
    • 1970-01-01
    • 2015-12-19
    相关资源
    最近更新 更多