CST格式時間如:Tue Oct 15 18:14:49 CST 2019
通過js Date對象的方法格式化時間成'yyyy-MM-dd hh:mm:ss'總是不對。
js代碼如下:
function dateFormat(value, row, index) {
//Tue Oct 15 18:14:49 CST 2019
var format = 'yyyy-MM-dd hh:mm:ss';
var date = new Date(value);
let d = new Date(date);
// 年
if (/yyyy/.test(format)) {
format = format.replace(/yyyy/, d.getFullYear())
}
// 月份
let month = d.getMonth() + 1
if (/MM/.test(format)) {
let monthStr = month < 10 ? '0' + month : month
format = format.replace(/MM/, monthStr)
} else if (/M/.test(format)) {
format = format.replace(/M/, month)
}
// 日期
let dates = d.getDate()
if (/dd/.test(format)) {
let dateStr = dates < 10 ? '0' + dates : dates
format = format.replace(/dd/, dateStr)
} else if (/d/.test(format)) {
format = format.replace(/d/, dates)
}
// 小時
let hours = d.getHours()
console.log(hours);
if (/HH/.test(format)) {
let hoursStr = hours < 10 ? '0' + hours : hours
format = format.replace(/HH/, hoursStr)
} else if (/H/.test(format)) {
format = format.replace(/H/, hours)
} else if (/hh/.test(format)) {
let hoursStr = hours < 10 ? '0' + hours : hours
format = format.replace(/hh/, hoursStr)
} else if (/h/.test(format)) {
let hoursMin = hours > 12 ? hours - 12 : hours
format = format.replace(/h/, hoursMin)
}
// 分
let minutes = d.getMinutes()
if (/mm/.test(format)) {
let minutesStr = minutes < 10 ? '0' + minutes : minutes
format = format.replace(/mm/, minutesStr)
} else if (/m/.test(format)) {
format = format.replace(/m/, minutes)
}
// 秒
let seconds = d.getSeconds()
if (/ss/.test(format)) {
let secondsStr = seconds < 10 ? '0' + seconds : seconds
format = format.replace(/ss/, secondsStr)
} else if (/s/.test(format)) {
format = format.replace(/s/, seconds)
}
return format;
}
數據庫獲取的時間爲Fri Oct 18 15:23:20 CST 2019 ,轉換後輸出的卻是:2019-10-19 05:23:20,查找各種api都百思不得其解,後來發現一個規律,new Date(value);value爲CST格式的時間,轉換後的時間要比真實時間多14個小時,所以,對value處理一下,
let d = new Date(date.valueOf() - 60* 60 * 1000*14);
時間前置14小時,得到正確結果。