时区纪要 博客分类: 应用问题
问题描述:mongodb使用过程中,发现插入mongodb之前的时间为14点,插入mongodb以后,显示时间为6点,取出mongodb的时间还是14点。换言之,插入mongodb的时间,并没有错,只是被服务器的时区同化了。
解决过程:
服务器时区如下:
通过百度搜索得知,以下情况:
本地的服务器时区如下:
初步怀疑是时区不一致造成的,一个是CST,一个是UTC。实践发现并不是,找了一台时区一致的服务器,发现mongodb中的时间数据还是少了八个小时。
实践结论:mongodb对时间的处理ISODate与java中的java.util.Date的时间相差了8个小时。这是由于mongo中的date类型是以UTC(Coordinated Universal Time)存储,就等于GMT(格林尼治标准时间)时间。而当前服务器时间所处的是东8区(+8),所以mongo shell会将当前的GMT+08时间减去8,存储成GMT时间。因而mongodb查询时,看到的时间少了8个小时。当通过Java去获取mongodb里的时间时,Java的驱动对时区做了处理,所以返回的结果又是当前服务器的时区。
时区小课堂:
1.UTC指的是Coordinated Universal Time-时间协调时间(又称世界标准时间、世界同一时间),是经过平均太阳时(以格林威治时间GMT-Greenwich Mean Time为准)、地轴运动修正后的新时标以及以‘秒’为单位的国际原子时所综合精算而成的时间,计算过程相当严谨精密,因此若以‘世界标准时间’的角度来说,UTC比GMT来得更加精准。
2.时区分为东西区,越往西走,时间越慢;越往东走,时间越快。相邻时间相差1小时。中国处在东八区。
推荐阅读
-
maven编译出现source 1.3 中不支持泛型问题的解决方案 博客分类: 应用问题 mavensource 1.3泛型
-
tomcat启动失败,报Unsupported major.minor version 51.0 博客分类: 应用问题 tomcat部署51.0
-
eclipse导入web项目,tomcat无法启用 博客分类: eclipse应用问题 eclipsetomcat
-
jsp页面显示文件内容有中文乱码问题 博客分类: javajsp jsp中文乱码文件读取
-
时区纪要 博客分类: 应用问题
-
eclipse导入web项目,tomcat无法启用 博客分类: eclipse应用问题 eclipsetomcat
-
项目打包,报软件包、类不存在问题排查过程 博客分类: JAVA进阶故障排查 maven打包失败找不到软件包编译失败
-
JAVA基础----解决get方法传递URL参数中文乱码问题 博客分类: JAVA基础 get 乱码 servlet
-
Keepalived时主备负载均衡器都有VIP的问题:VRRP协议问题 博客分类: keepalived keepalivedvipvrrp
-
go 语言中的 类注册 与 反射问题 博客分类: go goregisterreflect反射注册