【问题标题】:Google App Engine SDK: System time different from the computer timeGoogle App Engine SDK:系统时间与计算机时间不同
【发布时间】:2012-12-20 14:46:39
【问题描述】:

在 Google App Engine 中,我使用nowTime = datetime.datetime.now() 来获取系统时间。但是,我发现它与计算机系统时间不同。比如nowTime2012-12-20 14:44:30.910192,但是我的电脑系统时间是2012-12-20 22:44。有八小时的差异。是因为时区吗? Google App Engine SDK 从哪里获得时间?谢谢。

【问题讨论】:

  • 请记住,您的用户可能处于完全不同的时区。

标签: python google-app-engine datetime


【解决方案1】:

请参阅 http://timezones.appspot.com/ - GAE 时区将始终位于 UTC,这就是您看到 8 小时差异的原因。根据网站:

运行时的 TZ 环境变量设置为 UTC,不能为 改变了。例如返回的时间戳time.time() 和 datetime.datetime.now() 将始终采用 UTC。同样,日期时间 数据存储区中的属性将始终以 UTC 格式存储和返回。

您可以使用 astimezone() 方法。如果没有设置 datetime 的 tzinfo 成员,你会 首先需要使用 replace() 方法将其设置为 UTC tzinfo。

您还可以看到它记录在 here 中,以及如何进行特殊处理的示例。

【讨论】:

  • 难怪!谢谢。顺便说一句,我如何将时间更改为 UTC?我需要通过以下方式测量时间长度: datetime.datetime.now() - datetime.datetime(2012, 1, 1, 0, 0, 0)
  • @Yuan-LiangTang Ha,时间的东西仍然让我感到困惑,不管我花了多少时间阅读它:) 你可以尝试的一件事是把当前时间 (t = time.time()) 转换它通过执行utc = time.gmtime(t) 进入UTC,将其输入mktime 以获得自纪元以来的秒数(time.mktime(utc)),然后将其输入datetime.datetime.fromtimestamp 以获得datetime 对象。请参阅stackoverflow.com/questions/1697815/… 以获得更好的概览,祝一切顺利!
  • @Greg Ha,是的,如果他不需要微秒(我假设他不需要),这是一个更好的方法(假设更短,更容易消化和当然,实施得越快越好:))。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多