在python中获取时区的当前时间?

时间:2011-03-03 12:48:02

标签: python google-app-engine timezone

我正在使用带有python的Google App Engine。我无法安装第三方库。

我虽然这应该可行,但它实际上运行没有错误,但它返回当前时间时区未应用。

我做错了什么?

from datetime import tzinfo, timedelta, datetime

class Seoul_tzinfo(tzinfo):
    def utcoffset(self, dt):
        return timedelta(hours=9)
    def dst(self, dt):
        return timedelta(0)

greeting.date = datetime.now( Seoul_tzinfo() )

3 个答案:

答案 0 :(得分:3)

您需要使用所有正确的方法实现tzinfo类来执行您想要执行的操作。

documentation表示tzinfo是一个抽象类,如果要与datetime个对象一起使用,则需要使用适当的方法将其作为具体类。

具体请从文档中查看:

class FixedOffset(tzinfo):
    """Fixed offset in minutes east from UTC."""

    def __init__(self, offset, name):
        self.__offset = timedelta(minutes = offset)
        self.__name = name

    def utcoffset(self, dt):
        return self.__offset

    def tzname(self, dt):
        return self.__name

    def dst(self, dt):
        return ZERO

答案 1 :(得分:3)

您是在谈论从数据库中提取实体的时间吗?如果是这样,appengine以UTC格式存储所有dt属性;当你把(),它只是丢弃tz信息。最明智的做法是将您的dt转换为UTC(使用astimezone()),并在从数据存储区获取时转换回来。

(见http://code.google.com/appengine/docs/python/datastore/typesandpropertyclasses.html#DateTimeProperty

答案 2 :(得分:1)

我正在运行python 2.6.5,你的代码似乎工作正常。我把它调整为输出当地时间,你的时间调整一次;

$ python test.py
Local: 2011-03-03 08:53:43.514784
Adj: 2011-03-03 22:53:43.514784+09:00

你确定这与你的问候语没有关系吗?