GAE中保存日期的结果很奇怪(带有ndb库的Python)。 来自Web表单的入站字符串是%a%m /%d /%y格式化(Fri 3/3/17)。 用datetime.strptime解析,以获取日期值。 当它保存在DateProperty()字段中时,该值始终是前一天,太平洋标准时间16:00:00.000。
postDate = datetime.datetime.strptime(self.request.get('date-'+
hashed_id),'%a %m/%d/%y')
logging.info('postDate as Date: %s',postDate)
postDateStr = datetime.datetime.strftime(postDate,'%D')
logging.info('postDateStr: %s',postDateStr)
thisPost = ScheduledPost(id = postID,
...
postDate = postDate,
postDateStr = postDateStr
)
记录结果:
postDate as Date: 2017-03-03 00:00:00
postDateStr: 03/03/17
到目前为止这么好,对吗?但在数据存储区界面中,该记录显示:
PostDate: 2017-03-02 (16:00:00:000 PST)
PostDateStr: 03/03/17
糟糕。
工作站位于太平洋时间 - 但暂时搁置 - 日期查询似乎确认日期错误。假设今天是3/3/17 -
today = dt.datetime.now()
ScheduledPost.query(ScheduledPost.postDate == today).fetch()
没有记录返回。
将日期保存为字符串,并将日期查询为字符串,是此项目的可行解决方法。只是觉得它值得发帖 - 有人见过这个吗?建议?
答案 0 :(得分:0)
您在appengine上生成的日期时间是UTC,它会被存储为该日期时间,没有时区信息。 当您查看它时,它会被转换为太平洋时间。
您正在执行的查询不正确:您正在生成datetime
,而不是date
,因此您与之比较的时间将会有所不同