目录

前端向后端传递date后端接收带有"T"间隔符:

后端向前端传递date前端接收为2022-05-20T22:24:41.000+08:00格式

el-table中的时间转换

oracle中将select查询出的SYSDATE时间格式化

vue获取当前时间并处理格式为yyyy-mm-dd


JSON parse error: Cannot deserialize value of type `java.util.Date` from String “2022-05-07T06:46:31

前端向后端传递date后端接收带有"T"间隔符:

我在vue中el时间控件,遇到向后端传递的json时间转换错误,按照有的博主在后端转换中加'T',这样可以接收但是前端就显示带T这个字符了!!!

@JsonFormat(pattern = "yyyy-MM-dd 'T' HH:mm:ss")

其实不需要在后端加'T',应该在前端的vue el时间控件加入value-format="yyyy-MM-dd HH:mm:ss"

<el-date-picker
   v-model="form.birthday"
   type="datetime"
   value-format="yyyy-MM-dd HH:mm:ss"
   placeholder="请选择生日">
</el-date-picker>

这样就正常了

el-table中显示日期数据,不加:formatter="dateFormat"就显示undefined

后端向前端传递date前端接收为2022-05-20T22:24:41.000+08:00格式

<el-table-column label="检测时间" align="center" prop="cTime" :formatter="dateFormat" />


在method中加入方法
//日期格式化
      dateFormat(row, column) {
        // 获取单元格数据
        let date = row[column.property]
        if (date == undefined) {
          return ''
        }
        let dt = new Date(date)
        //console.log(dt.getYear());
        return dt.getFullYear() + '-' + (dt.getMonth() + 1) + '-' + dt.getDate() + ' ' + dt.getHours() + ':' + dt.getMinutes() + ':' + dt.getSeconds()
      },

 经过上面格式化转换页没能成功,装换成了NAN-NAN-NAN的这种,原因可能是oracle存储的时间是对象结构,前端拿到的是被分解过的时间戳,修改dateFormat()方法为下面的就可以

可以将后端传递的list转换为json输出看一下

console.log('testList:', JSON.stringify(res.data.list));

"BIRTHDAY":{"date":23,"hours":0,"seconds":0,"month":5,"nanos":0,"timezoneOffset":-480,"year":122,"minutes":0,"time":1655913600000,"day":4}

控制台的输出

el-table中的时间转换

<el-table-column prop="addTime" label="添加时间" :formatter="dateFormat" >
</el-table-column>

//eltable日期格式化
      dateFormat(row, column) {
        // 获取单元格数据,某行某列
        let date = row[column.property]
        if (date == undefined) {
          return ''
        }
        var year = date.year + 1900,
          month = date.month + 1,
          day = date.date,
          hour = date.hours,
          minute = date.minutes,
          seconds = date.seconds;
        //如果得到的数字小于9要在前面加'0'
        month = (month > 9) ? ("" + month) : ("0" + month);
        day = (day > 9) ? ("" + day) : ("0" + day);
        hour = (hour > 9) ? ("" + hour) : ("0" + hour);
        minute = (minute > 9) ? ("" + minute) : ("0" + minute);
        seconds = (seconds > 9) ? ("" + seconds) : ("0" + seconds);
        return year + "-" + month + "-" + day;
        // + " " + hour + ":" + minute + ":" + seconds;
      }

oracle中将select查询出的SYSDATE时间格式化

Oracle中查询当前时间、时间格式化方法_qq_26483671的博客-CSDN博客_oracle查询日期格式

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')||'00001' from dual; 

select to_char(sysdate,'yyyymmdd')||substr('0000'||SEQ_ASSET.nextval, -5)  from dual

Oracle数据库字符串类型主键自增实现_知凡的博客-CSDN博客_oracle 字符串主键

vue获取当前时间并处理格式为yyyy-mm-dd

getdate() {//获取当前时间格式为yyyy-mm-dd
        var dateNow = new Date(),
          year = dateNow.getFullYear(),
          month = dateNow.getMonth() + 1,
          day = dateNow.getDate(),
          hour = dateNow.getHours(),
          minute = dateNow.getMinutes(),
          seconds = dateNow.getSeconds();
        //如果得到的数字小于9要在前面加'0'
        month = (month > 9) ? ("" + month) : ("0" + month);
        day = (day > 9) ? ("" + day) : ("0" + day);
        hour = (hour > 9) ? ("" + hour) : ("0" + hour);
        minute = (minute > 9) ? ("" + minute) : ("0" + minute);
        seconds = (seconds > 9) ? ("" + seconds) : ("0" + seconds);
        return year + "-" + month + "-" + day;
      }

Logo

基于 Vue 的企业级 UI 组件库和中后台系统解决方案,为数万开发者服务。

更多推荐