記一次前端中國標准時間轉換為yyyy-MM-dd類型
最新在工作中遇到一個常見的需求,按照時間區間進行查詢。這里使用的是Elementui模板,但是獲取過后的時間是一個中國標准時間並不是想要的yyyy-MM-dd類型,時間類型如下:


我的js處理如下:
let searchDjmObj = _self.searchDjm;
let searchPmsjObj= _self.searchPmsj;
let startTime = '';
let endTime = '';
// 因為split是分割string類型的,所以如果不是string類型要先轉換
if(searchPmsjObj != '' && searchPmsjObj != null) {
if(typeof searchPmsjObj != 'string') {
searchPmsjObj = searchPmsjObj.toString();
}
// 分割出來開始時間和結束時間,一個數組
var result = searchPmsjObj.split(",");
// 獲取開始時間
let startDate = result[0];
// 獲取結束時間
let endDate = result[1];
// 將string類型時間轉換為date類型,因為只有時間類型才可以使用getFullyear,getMonth等
let startDateTemp = new Date(startDate);
// 將string類型時間轉換為date類型,因為只有時間類型才可以使用getFullyear,getMonth等
let endDateTemp = new Date(endDate);
console.log(startDateTemp);
console.log(endDateTemp);
// 將剝離的時間年轉換為string
let yyyys = startDateTemp.getFullYear().toString();
// 將剝離的時間月轉換為string
let months = (startDateTemp.getMonth() + 1).toString();
// 將剝離的時間日轉換為string
let days = startDateTemp.getDate().toString();
// 判斷月和日是否是小於10,小於10的補0
startTime = yyyys +"-"+(months[1]?months:"0" + months[0]) + "-" + (days[1] ? days:"0"+days[0]);
let yyyye = endDateTemp.getFullYear().toString();
let monthe = (endDateTemp.getMonth() + 1).toString();
let daye = endDateTemp.getDate().toString();
endTime = yyyye +"-"+(monthe[1]?monthe:"0" + monthe[0]) + "-" + (daye[1] ? daye:"0"+daye[0]);
那么后台接收就可以使用String了

相對應的sql編寫就可以是:
<select id="getDjmInfo" parameterType="String" resultMap="BaseResultMap">
select t.djm,s.* from ymgd.t_djm s left join sde.st_djmdk t on s.bsm = t.xmbsm
where 1=1
<if test="null != djm and '' != djm">
and ((t.djm like concat(concat('%',#{djm}),'%')) or (s.dkmc like concat(concat('%',#{djm}),'%')) or (s.pmjg like concat(concat('%',#{djm}),'%')))
</if>
<if test="null != startTime and '' != startTime and null != endTime and '' != endTime">
and (to_char(s.pmsj,'yyyy-MM-dd') between #{startTime} and #{endTime})
</if>
order by s.pmsj desc
</select>
注意這里要使用#來獲取變量不能使用$!
參考鏈接:
https://www.cnblogs.com/gudi/p/8031219.html
