如何做简洁网站,郑州正规的网站制作,建网站最专业,东莞营销网站制作首先得有一个预备知识 时间戳#xff1a;指1970-01-01 00:00:00(GMT/UTC)起到当前的毫秒数。与时区无关#xff0c;不同时区同一个时刻的时间戳是相同的。所以#xff0c;时间戳不受时区影响。但是#xff0c;不同时区的国家同一个时间戳显示的日期不同#xff0c;所以同一…首先得有一个预备知识 时间戳指1970-01-01 00:00:00(GMT/UTC)起到当前的毫秒数。与时区无关不同时区同一个时刻的时间戳是相同的。所以时间戳不受时区影响。但是不同时区的国家同一个时间戳显示的日期不同所以同一时刻的时间戳表示的日期会受时区影响。
一、MySQL数据库连接时区问题 1.jdbc连接时设置serverTimezone。 由于后台生成properties文件jdbc连接并没有区分国内外服务器时区统一用的中国时区Asia/Shanghai所以库timestamp类型字段都显示成了国内的时间。 解决办法如果项目并没有上线则可以使用JDK的默认时区设置serverTimezone为JDK的默认时区
ZoneId.systemDefault();也是系统的时区这样保证了数据库timestamp字段日期跟系统保持一致如果项目上线后则不能修改保持不变。修改后后会影响原来的涉及日期的逻辑。 如果有操作系统时区会更变的情况下需要程序监听时区的变化。重设默认时区。 2.jdbc连接时不设置serverTimezone。 会有JDKMySQL关于CST标准冲突导致的时区问题。 当未设置serverTimezone时数据库将连接使用MySQL服务端的time_zone全局时区默认值为CST。time_zone的默认值为SYSTEM而SYSTEM取的是system_time_zone系统时区的值system_time_zone的默认值就是CST。 MySQL中CST表示的是中国标准时间(UTC08:00)。 JDK中CST表示的是美国标准时间(UTC-05:00或UTC-06:00)。 由于JDK和MySQL服务端对CST时区的不同标准可能是下载的地址版本不同会导致时间问题。 解决办法jdbc连接时设置serverTimezone。
二、夏冬令时变化导致的时区问题 在程序中如果涉及天数的计算需要根据实际情况选择不同的计算规则。如果要用日期则全部用日期为标准计算如果要用时间戳则全部用时间戳为标准计算。检查使用的每一个时间工具计算是用的日期还是时间戳。否则会由于夏冬令时的变化导致时区问题。 比如在hutool工具中DateUtil工具中offsetDay方法计算偏移30天后的日期是根据时区为标准获得的日期。如果初始日期是冬令时某天的零点偏移天数后的日期是夏令时某天的零点但是由于转变为夏冬令时会让日期直接快/慢一个小时导致前后的时间在当前时区的时间戳跟以时间戳为标准计算天数的betweenDay方法计算出来的天数不同。