python,django,mongo的时区问题
2012-12-27 13:55
375 查看
最近项目中使用django做后台,查询mongo的中数据, 而mongo中的数据是使用python脚本导入的,而查询的时候又是从django中查询的,有需要按时
间查询,导致通过界面中查询的数据跟后面使用脚本查询的数据不一致, 然后跟进去是时区不一直导致的。
首先介绍下,python中的时间是本地的不带时区的时间,django中的时间是带时区的时间,mongo中存的是utc时间,不带时区,如下:
当然你也可以在python使用pytz模块来设置时区, 设置方式如下:
然后将以上三条数据通过pymongo插入到mongo中,在mongo的命令行中的到如下结果:
从以上的结果可以看出,pymongo会将带时区的时间转换为UTC时间然后在存入到monogo中,不带时区的时间就直接当成UTC时间存入到mongo中,所以以后在项目中要存时间的话一定要考虑时区的问题。
间查询,导致通过界面中查询的数据跟后面使用脚本查询的数据不一致, 然后跟进去是时区不一直导致的。
首先介绍下,python中的时间是本地的不带时区的时间,django中的时间是带时区的时间,mongo中存的是utc时间,不带时区,如下:
>> import datetime >> datetime.datetime.now() datetime.datetime(2012, 12, 26, 23, 42, 5, 372011) >> from django.utils import timezone >> timezone.now() datetime.datetime(2012, 12, 27, 5, 42, 48, 979966, tzinfo=<UTC>)
当然你也可以在python使用pytz模块来设置时区, 设置方式如下:
>> tz = pytz.timezone("Asia/Shanghai") >> datetime.datetime.now(tz) datetime.datetime(2012, 12, 27, 13, 43, 36, 852530, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>)
然后将以上三条数据通过pymongo插入到mongo中,在mongo的命令行中的到如下结果:
{ "_id" : ObjectId("50dbe047d8c2e317e49619f5"), "cur_time" : ISODate("2012-12-26T23:42:05.372Z") } { "_id" : ObjectId("50dbe054d8c2e317e49619f6"), "cur_time" : ISODate("2012-12-27T05:42:48.979Z") } { "_id" : ObjectId("50dbe061d8c2e317e49619f7"), "cur_time" : ISODate("2012-12-27T05:43:36.852Z") }
从以上的结果可以看出,pymongo会将带时区的时间转换为UTC时间然后在存入到monogo中,不带时区的时间就直接当成UTC时间存入到mongo中,所以以后在项目中要存时间的话一定要考虑时区的问题。
相关文章推荐
- PYTHON 与 DJANGO 的时区问题
- Python读写mongo时区问题
- JavaScript 解析 Django Python 生成的 datetime 数据 时区问题解决
- Python读写mongo时区问题
- python-Django 内存泄露问题
- django部署ubuntu数据库MYSQL时区问题
- Python Django还是RoR,这是一个问题
- 关于Django的时区设置TIME_ZONE,USE_TZ的问题
- 总结python+Django+mysql项目遇到的一些问题
- Python的Django应用程序解决AJAX跨域访问问题的方法
- python Django连接数据库问题
- python3.5 django1.10 demo 遇见的问题
- 关于python Django后端的时区管理
- Django 和时区设置的问题
- 学习python中的一些问题--centos下django连接mysql配置
- python3.4 + Django1.7.7 表单的一些问题
- python+django(解决对象编码显示Test Object问题)
- 关于python2.7.6+django1.4.2的admin样式无效问题记录
- Python MySQL Django一些问题
- django时区使用问题