spring boot项目前端和后台日期参数时区不一致问题

前端时间:Tue Nov 26 2019 23:59:00 GMT+0800 (中国标准时间),后台接收到的时间为:2019-11-26T15:59:00.000Z;两个时间相差8小时,也就是说这两个时间是不同时区的,2019-11-26T15:59:00.000Z是(UTC)

在网上找到很多解决方案,如下所示:(但是都没能解决我的问题

1、在启动类加上

@PostConstruct

void setDefaultTimezone() {
 TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));
} 
2、在application.properties加上
 ## json setting
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=Asia/Shanghai 
 
3、在启动类 启动run方法里加上
public static void main(String[] args) {
   TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));
  SpringApplication.run(BaseMicroServiceApplication.class, args);
}

我的解决方案是,在前端js把时间戳(Tue Nov 26 2019 23:59:00 GMT+0800)转为日期格式(2019-11-26 23:59:00)。(怪我前端没学好,捣鼓了挺久才把问题解决)

        var begin = $scope.beginQuery;
        var end = $scope.endQuery;
        function formatDate(date) {
            return moment(date).format('YYYY-MM-DD HH:mm:ss');
          }
         console.log(formatDate(begin));
         console.log(end);

输出日期为:

 注:第一个是转换后的日期,第二是没转换的时间戳

问题解决了,就是后台接收时间戳的时间把时区转为了UTC。

但是至于我为什么用前3种方式,没能解决问题,可能是我后台接收参数的方式不是json;

在这里做一下总结,下次再遇到可以都试一下

原文地址:https://www.cnblogs.com/ouyanxia/p/11958075.html