我有一个非常简单的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控制台无法准确呈现数据存储日期?
答案 0 :(得分:3)
旧数据查看器始终显示为UTC,新控制台会尝试在您的时区中显示。日期时间始终是应用程序内部的UTC(因此,如果您执行.put()或.get(),它将保存为UTC)
所以你在应用程序内部的午夜UTC设置它并做一个看跌期权,然后在前一天20:00:00T(美国东部时间晚上8点)向你显示的新控制台中查看它
在使用远程API时,已经报告了有关时区的问题...不确定您是否正在使用它来进行任何放置/获取...也可能发挥作用(但我认为它们主要由现在)