我正在使用带有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() )
答案 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
你确定这与你的问候语没有关系吗?