项目开发中的时区问题汇总

简介: 项目开发中的时区问题汇总

前言

背景:在操作日期时经常会出现比数据库多或少8小时的情况
原因:不同软件或系统的默认时区不一致导致的

几个时间名词:

  1. GMT:格林威治标准时间
  2. UTC:世界协调时间
  3. DST:夏日节约时间
  4. CST:中国标准时间
  5. CET:欧盟时间

其中GMT时间可以近似认为和UTC时间是相等的,但从精度上来说UTC时间更精确。其误差值必须保持在0.9秒以内


CST= GMT + 8 =UTC + 8

CET

1、欧洲中部时间(英语:CentralEuropeanTime,CET)是比世界标准时间(UTC)早一个小时的时区名称之一。

2、冬季时间为UTC+1(与北京时间时差-7小时),夏令时为UTC+2(与北京时间时差-6小时)

1.ES的当前时区

默认存储时间的格式是UTC时间,如果我们查询es然后获取时间日期默认的数据,会发现跟当前的时间差8个小时,这其实是正常的,因为es默认存储是用的UTC时间,所以我们需要做的就是读取long型时间戳,然后重新格式化成下面的时间戳,即可获得正确的时间 :

yyyy-MM-dd HH:mm:ss

2、MySQL 当前时区

查看mysql当前时间,当前时区

show variables like "%time_zone%";

MySQL中datetime和timestamp的区别及使用

1.对于timestamp,它把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储。查询时,将其又转化为客户端当前时区进行返回;而对于datetime,不做任何改变,基本上是原样输入和输出。

2.datetime占用8个字节,timestamp占用4个字节。timestamp利用率更高。

3.二者范围不一样。timestamp范围:‘1970-01-01 00:00:01.000000’ 到 ‘2038-01-19 03:14:07.999999’; datetime范围:’1000-01-01 00:00:00.000000’ 到 ‘9999-12-31 23:59:59.999999’。原因是,timestamp占用4字节,能表示最大的时间毫秒为2的31次方减1,也就是2147483647,换成时间刚好是2038-01-19 03:14:07.999999。

3、Linux当前时区

查看当前时区

命令 : "date -R"

Java8中基本只能通过当前位置所在城市名来获取时区

ZoneId defaultZone = ZoneId.systemDefault(); System.out.println(defaultZone);


目录
相关文章
|
监控 网络协议 Linux
Linux日期和时间管理指南:日期、时间、时区、定时任务和时间同步
Linux日期和时间管理指南:日期、时间、时区、定时任务和时间同步
229 0
|
9月前
Ubunt修改时间和时区的方法
Ubunt修改时间和时区的方法
57 1
|
9月前
|
前端开发 安全 Unix
Python编程手册系列 - 日历、日期、时间相关内建模块详解
Python编程手册系列 - 日历、日期、时间相关内建模块详解
124 0
|
存储 C语言 C++
软件开发入门教程网之C++ 日期 & 时间
软件开发入门教程网之C++ 日期 & 时间
|
存储 SQL 弹性计算
JVM时区配置-两行代码让我们一帮子人熬了一个通宵
不经意的两行代码让我们一帮子人熬了一个通宵
25672 10
|
消息中间件 Dubbo NoSQL
老板,JDK8的日期、时间函数我不熟悉?
介绍JDK 8中的新日期工具类,及整理成PDF文档
90 0
|
缓存 搜索推荐 定位技术
|
Oracle Java 关系型数据库
高级JAVA开发必备技能:时区的规则发生变化时,如何同步JDK的时区规则(实战方案,建议收藏)
高级JAVA开发必备技能:时区的规则发生变化时,如何同步JDK的时区规则(实战方案,建议收藏)
475 0
高级JAVA开发必备技能:时区的规则发生变化时,如何同步JDK的时区规则(实战方案,建议收藏)
|
Linux
嵌入式Linux修改时区
嵌入式Linux下修改系统的时区
681 0
|
C++ iOS开发 开发工具
2014秋C++第16周 项目5参考 编程处理C++源代码
课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂“贺老师课堂”同步展示,使用的帐号请到课程主页中查看。  【项目5-编程处理C++源代码】  在CodeBlocks等IDE中都提供了代码格式整理的功能。我们可以编写程序,处理的数据就是用C++写的源代码文件。C++源文件是一种文本文件,可以通过程序进行操
1245 2