前端发送当前时间作为参数,后端用LocalDateTime进行接收前端使用Date出现格式不统一情况

文章讲述了在前端使用Date对象设置固定格式为yyyy-MM-ddHH:mm:ss,然后通过后端LocalDateTime的parse方法进行解析,以保持格式一致。另一种方案是前端使用toISOString生成ISO格式字符串,后端通过DateTimeFormatter.ISO_INSTANT转换为LocalDateTime。这两种方法能解决前后端时间格式不统一的问题。
摘要由CSDN通过智能技术生成

前端发送当前时间作为参数,后端用LocalDateTime进行接收前端使用Date出现格式不统一情况

解决方式:

  1. 使用前端设置固定格式(存在格式,前端需要拼接但后端使用一个api)推荐

    1. Vue:

       const date = new Date()
       return date.getFullYear()+'-'+(date.getMonth()+1).toString().padStart(2,'0')+'-'+date.getDate().toString().padStart(2,'0')+' '+date.toLocaleTimeString()
      //将格式转化为:yyyy-MM-dd HH:mm:ss(为了以后端统一格式)
      
    2. 后端代码:

      //前端发来的时一个json字符串
      String time = questionInsertDTO.getSubmitTime();
      //通过LocalDateTime的api将字符串类型转化为想要的自定义格式
      LocalDateTime submitTime = LocalDateTime.parse(time, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
      
      
  2. 前端将转化为ISO类型字符串通过post传递到后端(前端简单,后端api较生僻不适合小白理解代码)

    1. Vue:

      const date = new Date()
      return date.toISOString()
      
    2. 后端代码:

      //前端发来的时一个json字符串
      String time = questionInsertDTO.getSubmitTime();
      //设置一个时间转换器(ISO_INSTANT)标准的日期时间转换器(可以自己多试试)
      DateTimeFormatter formatter = DateTimeFormatter.ISO_INSTANT;
      //使用该转换器解析日期时间字符串,并将其转换为一个 Instant 对象
      Instant instant = Instant.from(formatter.parse(dateTimeStr));
      //使用 Instant 对象和当前系统默认的时区创建一个 LocalDateTime 对象
      LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
      

      需要注意的是,在上述代码中,我们使用的是标准的ISO格式的日期时间字符串,其中末尾的字母“Z”表示这是一个UTC时间。如果前端使用的是其他格式的时间字符串,需要根据实际情况调整日期时间格式化器的参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值