js將CST格式時間(Tue Oct 15 18:14:49 CST 2019)格式化“yyyy-MM-dd hh:mm:ss”處理方法

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小時,得到正確結果。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章