常见时间格式介绍
- 参考链接
https://www.jianshu.com/p/735e8444cdda - 概念
格林威治标准时(GMT:Greenwich Mean Time)
英国伦敦格林威治定为0°经线开始的地方,地球每15°经度 被分为一个时区,共分为24个时区,相邻时区相差一小时;例: 中国北京位于东八区,GMT时间比北京时间慢8小时
通用协调时(UTC:Universal Time Coordinated)
经严谨计算得到的时间,精确到秒,误差在0.9s以内, 是比GMT更为精确的世界时间
夏季节约时(DST: Daylight Saving Time)
即夏令时;是为了利用夏天充足的光照而将时间调早一个小时,北美、欧洲的许多国家实行夏令时
当地标准时(CST:Central Standard Time)
- Central Standard Time (USA) UT-6:00 美国标准时间
- Central Standard Time (Australia) UT+9:30 澳大利亚标准时间
- China Standard Time UT+8:00 中国标准时间
- Cuba Standard Time UT-4:00 古巴标准时间
UTC时间与CST时间转换
-
时区差
时区差东为正,西为负。在此,把东八区时区差记为 +0800 -
计算公式
UTC + 时区差 = 本地时间 -
如何修改MySQL时间
- 查询当前时间
1 2 3 4 5 | ```sql SELECT CURRENT_TIMESTAMP(); SELECT NOW(); SHOW VARIABLES LIKE '%time_zone%'; ``` |
- 设置为北京东8区
1 2 3 | ```sql SET time_zone = '+8:00'; ``` |
- 立即生效
1 2 3 | ```sql flush privileges; ``` |
- 查看CentOS7系统时间
1timedatectl
Java实现代码
- JDK1.8环境
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42/**
* @Author charlesYan
* @Description 将UTC时间转换为CST(北京东八区)时间
* @Date 17:52 2019/11/18
* @Param [utcStr]
* @return java.lang.String
**/
public static String utcToCst(String utcStr){
if(StringUtils.isEmpty(utcStr)){
return "";
}
Date cstDate = null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
try {
cstDate = sdf.parse(utcStr);
} catch (ParseException e) {
LOG.error("UTC change to CST Exception: " + e);
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(cstDate);
calendar.set(Calendar.HOUR,calendar.get(Calendar.HOUR) + 8);
return formarDateToStr("yyyy-MM-dd HH:mm:ss", calendar.getTime());
}
/**
* @Author charlesYan
* @Description 将日期转换由日期格式为指定字符串格式
* @Date 17:53 2019/11/18
* @Param [aMask, date]
* @return java.lang.String
**/
public static String formarDateToStr(String aMask, Date date){
SimpleDateFormat df = null;
String formateDate = null;
if(null != date){
df = new SimpleDateFormat(aMask);
formateDate = df.format(date);
}
return formateDate;
} - JDK1.6环境
JDK1.6不支持"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"格式转换,采用将"Z"替换为" UTC",再SimpleDateFormat进行转换,再根据需要截取转换的日期字符串至所需长度,若有好的方法欢迎评论,不胜感激