我在googleappengine(Python)的一个小应用程序中工作,它使用googledataapi在Google帐户中创建一个新的日历,并用一些事件填充它。在
我使用的事件是从另一个地方解析出来的,它们的日期是欧洲/斯德哥尔摩时区(我想是CEST或CET)。在
因此,首先,我创建一个Python struct_time(例如)如下:
start = strptime("2009-11-16 10:15", "%Y-%m-%d %H:%M")
Python的doc说我可以使用标志%Z来指定时区,事实上它在Python解释器中工作。。。但它在googleappengine服务器(localhost和deploy)中完全失败。这不是什么新鲜事,正如我所看到的here。在
因为我使用的是Google数据API,它需要UTC/GMT格式的时间,所以我需要一种方法来将欧洲/斯德哥尔摩当地时间转换为UTC/GMT,而不需要在strptime中使用%Z标志。。。(还有比每次约会少一个小时更聪明的方法…)
再次感谢您:)
在将对象解析为datetime之后,必须添加时区。为此,您需要创建从日期时间.tzinfo在
等等,现在是带时区的日期时间。从这里开始,google将接管,因为datetime字段是分区感知的,并且在存储上将以utc格式存储。在
记住夏令时之类的。在
如果您想四处搜寻,我使用上面描述的类here
我去年发了something related to this subject on my blog。基本上,当将所有时间存储在数据存储中时,它会将所有时间转换为UTC,并在读取时将UTC时区附加到这些时间。您可以随意修改它,然后将值转换为您想要的任何本地时区。在
这个代码示例可能已经过时了-我已经很久没有使用appengine了。但我希望它能对你有所帮助。在
我还推荐优秀的pytz库;它为几乎每个有用的时区提供时区对象。(我想链接到它,但是垃圾邮件预防阻止了我。只需谷歌搜索。)
相关问题 更多 >
编程相关推荐