时区问题常见的时区概念UTC (协调世界时)。主要的世界时间标准。本初子午线。位于英国伦敦也叫0度经线。本初子午线所在的时区也叫零时区或中时区。北京时间 (CST)中国的标准时间是 UTC8比零时区早8个小时位于本初子午线向东8个时区。GMT8也是东8时区时区计算所求时间 已知时间 ± 时区差比如假如零时区为7号0点则北京时间为7号8点。(UTC8)当零时区处于半夜时位于东边的北京时间已经是早晨时间关于时间戳先划一个重点时间戳不分时区。java.util.Datejava.util.Date 不存储时区也不默认表示零时区。它表示的是绝对的时间点。Date的本质 时间戳在日期的打印过程中时区可能会怎样造成影响现在存在一个实体类Personnow是Date字段。Data Builder NoArgsConstructor AllArgsConstructor public class Person { private Long id; JsonFormat(pattern yyyy-MM-dd HH:mm:ss) private Date now; } GetMapping(/api/timezone1) public Person timeZone1(){ return Person.builder() .now(new Date()) .build(); }spring.jackson.timezonespring: jackson: # time-zone: Asia/Shanghai # time-zone: GMT8 time-zone: UTC假如我现在位于东8时区 时间为21点46分。打印的时间格式可能为Asia/Shanghai {id:null,now:2026-06-07 21:46:37} GMT8 {id:null,now:2026-06-07 21:46:37} UTC {id:null,now:2026-06-07 13:46:37}在数值上东8区比UTC大8小时。在实际使用中如果配置成UTC会导致得到的时间比结果数值小8小时数据库(mysql)mysql数据库时区查询时区SELECT global.time_zone, session.time_zone; SHOW VARIABLES LIKE time_zone;时区对mysql有什么影响待本地验证比如现在数据库中存在一个字段 time1类型是时间戳。现在我在mybatis的mapper文件中包含一个判断 time1 ‘2026-06-07 00:00:00’。jdbc url中时区为utc零时区。mysql会将字符串’2026-06-07 00:00:00’根据当前会话时区转为一个绝对时间时间戳进行比较所以连接的url时区会影响判断的实际时间比如会导致相差几个小时关于mycat后续补充mycat对时区是怎么处理的是否可以配置成东8区如果配置成东8区那连接mycat应该使用什么时区UTC小补充GMT8和UTC8有什么区别简单来说在绝大多数日常编程和配置场景下GMT8 和 UTC8 没有区别GMT8格林尼治标准时间天文时间旧标准不均匀不需要润秒UTC8协调世界时原子时间现用标准极其稳定需要润秒tag时区mysqlspring