首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google App Engine、parsedatetime和TimeZones

Google App Engine、parsedatetime和TimeZones
EN

Stack Overflow用户
提问于 2011-01-06 15:07:42
回答 2查看 754关注 0票数 3

我正在开发一个Google App Engine / Django应用程序,我遇到了以下问题:在我的html中,我有一个时间输入。输入是自由文本--用户输入“1小时内”或“明天上午11点”。然后,文本被发送到AJAX中的服务器,服务器使用python库http://code.google.com/p/parsedatetime/对其进行解析。解析后,服务器将返回该时间的纪元时间戳。这就是问题所在-- Google App Engine总是在UTC上运行。因此,假设现在本地时间是上午11点,UTC时间是凌晨2点。当我发送"now“到服务器时,它将返回"2am",这很好,因为我希望以UTC时间接收日期。当我发送“在1小时内”服务器将返回"3am“,这是好的,再次。然而,当我发送“在中午”时,服务器会返回“12‘m”,因为它认为我说的是UTC的中午时间--但实际上我需要它返回凌晨3点,这对于请求发送者来说是中午。我可以传递发送请求的浏览器的TZ,但这对我没有真正的帮助- parsedatetime库不会接受时区参数(如果我错了,请纠正我)。这附近有散步的地方吗?也许可以通过某种方式设置环境TZ?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2011-01-13 15:18:14

您可以使用timedelta对象(http://docs.python.org/library/datetime.html)将差异相加

偏移量

下面是一些(非常粗略的)代码,让你了解一下:

代码语言:javascript
复制
import parsedatetime
import datetime

my_users_timezone = whatever #replace this with a string that will make sense in the offsets dictionary

utc_timezone_offsets_in_hours = {
   'utc' : 0,
   'pacific' : -8,
   # etc
}

parsed_time = parsedatetime.whatever(input_string)
offset_hours = utc_utc_timezone_offsets_in_hours[my_users_timezone]
final_time = parsed_time + datetime.timedelta(hours=offset_hours)
return final_time
票数 2
EN

Stack Overflow用户

发布于 2011-01-13 15:48:12

parsedatetime的解析例程需要一个timetuple()作为sourceTime参数,并且应该携带你在其中包含的任何时区信息,因为我不记得写了任何覆盖它的代码,如果没有,那么它就是一个bug,并让我知道。

您可以使用类似上述答案的代码,在parse()例程返回它确定的日期时间后添加TZ偏移量:

代码语言:javascript
复制
import parsedatetime as pdt

cal = pdt.Calendar()

start  = datetime.datetime.now().timetuple()

parsed, flag = cal.parse('in 1 hr', start)

然后,您可以获取parsedtimetuple值,并使用timedelta添加您的偏移小时数

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4612635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档