前端发送当前时间作为参数,后端用LocalDateTime
进行接收前端使用Date
出现格式不统一情况
解决方式:
使用前端设置固定格式(存在格式,前端需要拼接但后端使用一个api)推荐
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(为了以后端统一格式)
后端代码:
//前端发来的时一个json字符串 String time = questionInsertDTO.getSubmitTime(); //通过LocalDateTime的api将字符串类型转化为想要的自定义格式 LocalDateTime submitTime = LocalDateTime.parse(time, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
前端将转化为
ISO
类型字符串通过post
传递到后端(前端简单,后端api较生僻不适合小白理解代码)
Vue:
const date = new Date() return date.toISOString()
后端代码:
//前端发来的时一个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时间。如果前端使用的是其他格式的时间字符串,需要根据实际情况调整日期时间格式化器的参数。