通常JSON時間一般是這樣的格式。
1
|
/Date(1436595149269)/
|
通常我們用AJAX獲取下來的JSON數據,如果有時間,都是這種格式的。其中,中間的一段數字"1436595149269"表示的是1970年1月1日至今的毫秒數。
這種時間格式並不能夠直接顯示給用戶查看,因為這是人類所看不懂的時間。所以我們需要將它轉換為正常人能夠理解的時間格式。
第一步,替換掉/Date()/
//對外暴露的函數,替換掉/Date( )/ function convertTime(jsonTime, format) { var date = new Date(parseInt(jsonTime.replace("/Date(", "").replace(")/", ""), 10)); var formatDate = date.format(format); return formatDate; }
第二步,將數字時間轉換為可視化的yyyy-MM-dd HH:mm:ss的格式
//先擴展一下javascript的Date類型,增加一個函數,用於返回我們想要的 yyyy-MM-dd HH:mm:ss 這種時間格式 Date.prototype.format = function (format) { var date = { "M+": this.getMonth() + 1, "d+": this.getDate(), "h+": this.getHours(), "m+": this.getMinutes(), "s+": this.getSeconds(), "q+": Math.floor((this.getMonth() + 3) / 3), "S+": this.getMilliseconds() }; if (/(y+)/i.test(format)) { format = format.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length)); } for (var k in date) { if (new RegExp("(" + k + ")").test(format)) { format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? date[k] : ("00" + date[k]).substr(("" + date[k]).length)); } } return format; }
調用示例
$(function () { var dt = '/Date(1436595149269)/'; var formatTime1 = convertTime(dt, "yyyy-MM-dd hh:mm:ss");//2015-07-11 14:12:29 $("#div1").text(formatTime1); var formatTime2 = convertTime(dt, "yyyy年MM月dd日 hh時mm分ss秒");//2015年07月11日 14時12分29秒 $("#div2").text(formatTime2); })
另外一個實現
另外,還有一個方式,這個就不需要改原來Date原型了。
<!doctype html> <html> <head> <title>JSON時間格式化(/Date()轉換為yyyy-MM-dd HH:mm:ss)</title> </head> <body> <script> //yyyy-MM-dd HH:mm:SS function getDateTime(date) { var year = date.getFullYear(); var month = date.getMonth() + 1; var day = date.getDate(); var hh = date.getHours(); var mm = date.getMinutes(); var ss = date.getSeconds(); return year + "-" + month + "-" + day + " " + hh + ":" + mm + ":" + ss; } //調用的是這個方法 function ConvertJSONDateToJSDate(jsondate) { var date = new Date(parseInt(jsondate.replace("/Date(", "").replace(")/", ""), 10)); return date; } var date = "/Date(1379944571737)/"; alert(getDateTime(ConvertJSONDateToJSDate(date))); </script> </body> </html>