代码之家  ›  专栏  ›  技术社区  ›  speedplane

将UTC日期时间转换为用户的本地日期和时间

  •  5
  • speedplane  · 技术社区  · 14 年前

    将存储在DateTimeProperty中的datetime转换为用户的datetime的最佳方法是什么?

    3 回复  |  直到 14 年前
        1
  •  9
  •   Tomasz Zieliński    14 年前

    这更多的是一个Python问题,而不是GAE问题,除非GAE有一些基础设施来帮助解决这个问题(我已经做了一个快速的扫描,但是没有找到任何参考)。

    http://www.maxmind.com/app/geolitecity ),或者显式地询问用户,这样做的好处是您可以要求一个描述性的时区名称,比如“Europe/Warsaw”。如果您只要求UTC+2,那么您就失去了DST移位的任何指示。

    然后,您可以使用例如。 pytz

    import pytz
    local_tz = pytz.timezone(timezone_name)
    return timestamp_utc.replace(tzinfo=pytz.utc).astimezone(local_tz).replace(tzinfo=None)
    

    --其中 timestamp_utc 是要转换的utc日期时间,时区名称是所提到的“欧洲/华沙”。

        2
  •  3
  •   speedplane    14 年前

    所以我对此做了更多的研究。要正确地使用时区,你必须遵循托马斯在回答中所描述的。然而,如果你愿意忍受一点不愉快,你可以用更少的努力得到90%的成功。

    当用户登录或在站点上执行任何操作时,可以使用javascript获取其当前时区偏移量,然后在下一个请求中发送:

    var offset = (new Date()).getTimezoneOffset()
    $.post("post.html", "offset="offset.toString(), ... );
    

        3
  •  0
  •   Suat Atan PhD    14 年前

    在模板中转换Google App Engine datetime的最佳简便方法:

    http://code.google.com/p/dateconv4gae/