为什么数据存储区的日期时间在appengine控制台与appengine仪表板中看起来有所不同?

时间:2015-04-29 16:53:27

标签: python google-app-engine

我有一个非常简单的NDB模型,我正在为用户输入出生日期:

class Contact(ndb.Model):
    first_name= ndb.StringProperty()
    last_name= ndb.StringProperty()
    dob = ndb.DateTimeProperty()
contact1_dob = datetime.strptime('12/17/1989', "%m/%d/%Y").date()
contact1 = Contact(first_name='Homer', last_name='Simpson', dob=contact1_dob )
contact1_result = contact1.put()

加载到数据存储区工作正常,当我通过Google Appengine仪表板https://appengine.google.com/查看数据时,DOB看起来很完美,例如1989-12-17 00:00:00

但是当我通过appengine控制台https://console.developers.google.com查看数据时,DOB落后了4个小时(我在纽约),例如1989-12-16 20:00:00

我只能猜测这是一个时区问题,但如果它不是仪表板和控制台中的日期匹配?

此外,如果我通过.get()调用检索实体并查看原始数据,则日期与我输入的完全相同,例如1989-12-17 00:00:00,这就是我想要的。

那么为什么appengine控制台无法准确呈现数据存储日期?

1 个答案:

答案 0 :(得分:3)

数据查看器始终显示为UTC,新控制台会尝试在您的时区中显示。日期时间始终是应用程序内部的UTC(因此,如果您执行.put()或.get(),它将保存为UTC)

所以你在应用程序内部的午夜UTC设置它并做一个看跌期权,然后在前一天20:00:00T(美国东部时间晚上8点)向你显示的控制台中查看它

在使用远程API时,已经报告了有关时区的问题...不确定您是否正在使用它来进行任何放置/获取...也可能发挥作用(但我认为它们主要由现在)