time zone

mysql global time zone = UTC

前端调用java程序入参如下:

{
    "dateTime":"2020-07-01 9:07:04",
    "timeStamp":"2020-07-01 9:07:04"
}
url: jdbc:mysql://122.51.245.236:3306/z?useSSL=false&useUnicode=true&characterEncoding=utf-8&useLegacyDatetimeCode=false&serverTimezone=UTC

会话以UTC时区,查看 新插入数据如下
khkhkkhkh

url: jdbc:mysql://122.51.245.236:3306/z?useSSL=false&useUnicode=true&characterEncoding=utf-8&useLegacyDatetimeCode=false&serverTimezone=Asia/Tokyo

会话以UTC时区,查看 新插入数据如
在这里插入图片描述

url: jdbc:mysql://122.51.245.236:3306/z?useSSL=false&useUnicode=true&characterEncoding=utf-8&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai

会话以UTC时区,查看 新插入数据如
在这里插入图片描述

会话以Asia/Shanghai时区,查看 新插入数据如

set time_zone = '+8:00';
show variables like '%time_zone%'
select * from _time;

在这里插入图片描述
datetime 与timestamp区别:

  • datetime类型,java传入的是什么时间数据库存的就是什么时间,和时区没有关系
  • timestamp类型,和时区有关系。简单理解:这个值是用两个字段共同标识出来的
  1. mysql default timezone + date
  2. java存取数据时,返回给java的date值是在默认时区下对应的date值
  3. time_stamp 只支持到2038年,这个有很大的局限性

serverTimezone可选值列举:

<?xml version="1.0" encoding="UTF-8"?>
<timezones>
	<timezone id="Asia/Shanghai">中国标准时间 (北京)</timezone>
	<timezone id="Asia/Hong_Kong">香港时间 (香港)</timezone>
	<timezone id="Asia/Taipei">台北时间 (台北)</timezone>
	<timezone id="Asia/Seoul">首尔</timezone>
	<timezone id="Asia/Tokyo">日本时间 (东京)</timezone>
	<timezone id="America/New_York">美国东部时间 (纽约)</timezone>
	<timezone id="America/Denver">美国山区时间 (丹佛)</timezone>
	<timezone id="America/Costa_Rica">美国中部时间 (哥斯达黎加)</timezone>
    <timezone id="America/Chicago">美国中部时间 (芝加哥)</timezone>
    <timezone id="America/Mexico_City">美国中部时间 (墨西哥城)</timezone>
    <timezone id="America/Regina">美国中部时间 (里贾纳)</timezone>
    <timezone id="America/Los_Angeles">美国太平洋时间 (洛杉矶)</timezone>
    <timezone id="Pacific/Majuro">马朱罗</timezone>
    <timezone id="Pacific/Midway">中途岛</timezone>
    <timezone id="Pacific/Honolulu">檀香山</timezone>
    <timezone id="America/Anchorage">安克雷奇</timezone>
    <timezone id="America/Tijuana">美国太平洋时间 (提华纳)</timezone>
    <timezone id="America/Phoenix">美国山区时间 (凤凰城)</timezone>
    <timezone id="America/Chihuahua">奇瓦瓦</timezone>
    <timezone id="America/Bogota">哥伦比亚时间 (波哥大)</timezone>
    <timezone id="America/Caracas">委内瑞拉时间 (加拉加斯)</timezone>
    <timezone id="America/Barbados">大西洋时间 (巴巴多斯)</timezone>
    <timezone id="America/Manaus">亚马逊标准时间 (马瑙斯)</timezone>
    <timezone id="America/St_Johns">纽芬兰时间 (圣约翰)</timezone>
    <timezone id="America/Santiago">圣地亚哥</timezone>
    <timezone id="America/Argentina/Buenos_Aires">布宜诺斯艾利斯</timezone>
    <timezone id="America/Godthab">戈特霍布</timezone>
    <timezone id="America/Montevideo">乌拉圭时间 (蒙得维的亚)</timezone>
    <timezone id="America/Sao_Paulo">圣保罗</timezone>
    <timezone id="Atlantic/South_Georgia">南乔治亚</timezone>
    <timezone id="Atlantic/Azores">亚述尔群岛</timezone>
    <timezone id="Atlantic/Cape_Verde">佛得角</timezone>
    <timezone id="Africa/Casablanca">卡萨布兰卡</timezone>
    <timezone id="Europe/London">格林尼治标准时间 (伦敦)</timezone>
    <timezone id="Europe/Amsterdam">中欧标准时间 (阿姆斯特丹)</timezone>
    <timezone id="Europe/Belgrade">中欧标准时间 (贝尔格莱德)</timezone>
    <timezone id="Europe/Brussels">中欧标准时间 (布鲁塞尔)</timezone>
    <timezone id="Europe/Sarajevo">中欧标准时间 (萨拉热窝)</timezone>
    <timezone id="Africa/Brazzaville">西部非洲标准时间 (布拉扎维)</timezone>
    <timezone id="Africa/Windhoek">温得和克</timezone>
    <timezone id="Asia/Amman">东欧标准时间 (安曼)</timezone>
    <timezone id="Europe/Athens">东欧标准时间 (雅典)</timezone>
    <timezone id="Asia/Beirut">东欧标准时间 (贝鲁特)</timezone>
    <timezone id="Africa/Cairo">东欧标准时间 (开罗)</timezone>
    <timezone id="Europe/Helsinki">东欧标准时间 (赫尔辛基)</timezone>
    <timezone id="Asia/Jerusalem">以色列时间 (耶路撒冷)</timezone>
    <timezone id="Africa/Harare">中部非洲标准时间 (哈拉雷)</timezone>
    <timezone id="Europe/Minsk">明斯克</timezone>
    <timezone id="Asia/Baghdad">巴格达</timezone>
    <timezone id="Europe/Moscow">莫斯科</timezone>
    <timezone id="Asia/Kuwait">科威特</timezone>
    <timezone id="Africa/Nairobi">东部非洲标准时间 (内罗毕)</timezone>
    <timezone id="Asia/Tehran">伊朗标准时间 (德黑兰)</timezone>
    <timezone id="Asia/Baku">巴库</timezone>
    <timezone id="Asia/Tbilisi">第比利斯</timezone>
    <timezone id="Asia/Yerevan">埃里温</timezone>
    <timezone id="Asia/Dubai">迪拜</timezone>
    <timezone id="Asia/Kabul">阿富汗时间 (喀布尔)</timezone>
    <timezone id="Asia/Karachi">卡拉奇</timezone>
    <timezone id="Asia/Oral">乌拉尔</timezone>
    <timezone id="Asia/Yekaterinburg">叶卡捷林堡</timezone>
    <timezone id="Asia/Calcutta">加尔各答</timezone>
    <timezone id="Asia/Colombo">科伦坡</timezone>
    <timezone id="Asia/Katmandu">尼泊尔时间 (加德满都)</timezone>
    <timezone id="Asia/Almaty">阿拉木图</timezone>
    <timezone id="Asia/Rangoon">缅甸时间 (仰光)</timezone>
    <timezone id="Asia/Krasnoyarsk">克拉斯诺亚尔斯克</timezone>
    <timezone id="Asia/Bangkok">曼谷</timezone>
    <timezone id="Asia/Irkutsk">伊尔库茨克时间 (伊尔库茨克)</timezone>
    <timezone id="Asia/Kuala_Lumpur">吉隆坡</timezone>
    <timezone id="Australia/Perth">佩思</timezone>
    <timezone id="Asia/Yakutsk">雅库茨克时间 (雅库茨克)</timezone>
    <timezone id="Australia/Darwin">达尔文</timezone>
    <timezone id="Australia/Brisbane">布里斯班</timezone>
    <timezone id="Asia/Vladivostok">海参崴时间 (符拉迪沃斯托克)</timezone>
    <timezone id="Pacific/Guam">关岛</timezone>
    <timezone id="Australia/Adelaide">阿德莱德</timezone>
    <timezone id="Australia/Hobart">霍巴特</timezone>
    <timezone id="Australia/Sydney">悉尼</timezone>
    <timezone id="Asia/Magadan">马加丹时间 (马加丹)</timezone>
    <timezone id="Pacific/Auckland">奥克兰</timezone>
    <timezone id="Pacific/Fiji">斐济</timezone>
    <timezone id="Pacific/Tongatapu">东加塔布</timezone>
</timezones>
如果想看上面城市具体对应的时区可以调用下面的方法
     /**
      * 获取城市所在时区
      * @param targetId 目标时区id 比如:America/New_York
      * @return string 时区 比如:+08:00
      */
     public static String getTimeZone(String targetId){
    	//校验入参是否合法
        if (null == targetId || "".equals(targetId)){
            return null;
        }
    	try {
    		 TimeZone timeZone = TimeZone.getTimeZone(targetId);
        	 SimpleDateFormat outputFormat = new SimpleDateFormat("Z");
        	 outputFormat.setTimeZone(timeZone);
        	 Date date = new Date(System.currentTimeMillis());
        	 //加上冒号显示,把+0800转成+08:00
        	 StringBuffer stringBuffer = new StringBuffer(outputFormat.format(date));
        	 return stringBuffer.insert(3, ":").toString();
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
     }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值