Jam*_*mes 5 python datetime pytz pymongo
在mongodb
,一个被调用的字段joining_date
显示为
"Sun Dec 19 2010 05:35:55 GMT+0000 (UTC)"
Run Code Online (Sandbox Code Playgroud)
如您所见,这是一个UTC日期.
但是当从pymongo访问时,相同的字段显示为
datetime.datetime(2010, 12, 19, 5, 35, 55, 286000)
Run Code Online (Sandbox Code Playgroud)
从python我需要检查日期是否为utc格式.
问题:我得到一个奇怪的结果,如下所示
v = datetime(2010, 12, 19, 5, 35, 55, 286000)
v.tzinfo == pytz.utc # Returns False !..why ?
Run Code Online (Sandbox Code Playgroud)
如何Sun Dec 19 2010 05:35:55 GMT+0000 (UTC)
从原始字符串中取回datetime.datetime(2010, 12, 19, 5, 35, 55, 286000)
或如何检查是否datetime.datetime(2010, 12, 19, 5, 35, 55, 286000)
为UTC格式?
dcr*_*sta 11
datetime
pymongo返回的对象总是表示UTC的时间,就像存储在MongoDB中的日期总是存储为(即假设为)UTC.
datetime
如果您在创建时将tz_info
标志设置为,则pymongo可以自动将您的s 转换为时区.然后,您可以根据需要使用s 方法转换为另一个时区.True
Connection
datetime
astimezone()
引用 PyMongo 文档:
\n\n\n\n\n从服务器检索的所有日期时间(无论您使用什么版本的驱动程序\xe2\x80\x99)都将是幼稚的并代表 UTC。
\n
IE v.tzinfo is None
。如果您尝试将它们转换为另一个时区,您会收到警告:
>>> v.astimezone(pytz.timezone("US/Eastern"))\nTraceback (most recent call last):\n File "<stdin>", line 1, in <module>\nValueError: astimezone() cannot be applied to a naive datetime\n
Run Code Online (Sandbox Code Playgroud)\n\n但是,您可以通过执行以下操作来获取时区感知的日期时间datetime(v.year, v.month, v.day, v.hour, v.minute, v.second, v.microsecond, pytz.utc)
。在这种情况下,您的原始代码将起作用:
v = datetime(2010, 12, 19, 5, 35, 55, 286000, pytz.utc)\nv.tzinfo == pytz.utc # Returns True\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
4201 次 |
最近记录: |