+-

我正在寻找一种在mongoDB中存储时区感知日期时间对象的方法.
我在这里阅读:Create an ISODate with pyMongo,使用pymongo在MongoDB中存储日期时间对象将导致存储ISODate对象(或从shell查询时看起来像这样的对象)
使用datetime.replace(tzinfo = […])方法,有一种方法可以使datetime对象知道其时区.不幸的是,当在mongoDB中存储此类对象时,时区信息似乎丢失了.
我的问题是:有没有一种方法可以将时区存储在ISODate对象本身中,以便它看起来像这样:ISODate(“ 2012-07-14T01:00:00 01:00”)在查询外壳程序时,等等稍后重新加载pymongo时,datetime对象仍可识别时区?
非常感谢你的帮助!
最佳答案
不,没有办法做到这一点. MongoDB的ISODate只是一个Date对象的包装,它只是一个由整数表示的时刻,该整数对应于自UTC 1970年1月1日起经过的毫秒数.它无法保留偏移量.
您可能考虑将其存储为字符串,可能存储在辅助字段中,这样您仍然可以查询该时刻,同时仍然知道本地时间和偏移量.
另外,假设您使用的是pytz或dateutil中的tzdb时区,例如“欧洲/伦敦”,则应认识到无法从偏移量确定时区.因此,如果您确实需要重建完整的以tz为单位的日期时间,则还必须将时区标识符存储在单独的字段中.
点击查看更多相关文章
转载注明原文:python-使用pymongo创建可识别时区的ISODate - 乐贴网