封装javascript帮助方法--时间转换
在利用ajax和服务端交互的时候,服务端返回的时间格式是/Data(34567236565)/样子的(起码.net服务端是这么返回的)。每次解决都要写一遍方法,很是头疼。
今天就封装一下,一劳永逸把。
首先构建一个构造函数用于初始化帮助对象
function DateTimeHelper() { this.convertToDate = convertToDate; this.getLocalTime = getLocalTime; };
里面有两个方法,一个是处理时间的方法。
//格式化时间对象 //时间处理(专门针对/Data(34567236565)/处理) //dateStr:时间字符串,len:要返回的时间最小粒度 值:year,month,day,hours,minutes,seconds function convertToDate(dateStr, len) { var timeStr = dateStr.match(/\d+/)[0]; var date = new Date(parseInt(timeStr)); return convertToTimeStr(date, len) }
一个是获取本地时间的方法
//获取当前时间对象,len:要返回的时间最小粒度 值:year,month,day,hours,minutes,seconds function getLocalTime(len) { var date = new Date(); return convertToTimeStr(date, len); }
拼接时间格式的核心方法
//格式化时间对象,date:时间对象,len:要返回的时间最小粒度 值:year,month,day,hours,minutes,seconds function convertToTimeStr(date, len) { if (typeof len == "undefined") { len = "seconds"; } var year = date.getFullYear(); //可能需要补充占位符的字段 var needAddPlaceholder = [date.getMonth() + 1, date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds()] //补齐占位符 for (var x in needAddPlaceholder) { if (needAddPlaceholder[x] < 10) { needAddPlaceholder[x] = "0" + needAddPlaceholder[x]; } } var dateArray = [year, needAddPlaceholder[0], needAddPlaceholder[1]]; var time = [needAddPlaceholder[2], needAddPlaceholder[3], needAddPlaceholder[4]]; switch (len) { case "year": return dateArray.slice(0, 1); case "month": return dateArray.slice(0, 2).join("-"); case "day": return dateArray.slice(0, 3).join("-"); case "hours": return dateArray.slice(0, 3).join("-") + " " + time.slice(0, 1); case "minutes": return dateArray.slice(0, 3).join("-") + " " + time.slice(0, 2).join(":"); case "seconds": return dateArray.slice(0, 3).join("-") + " " + time.slice(0, 3).join(":"); default: throw new Error('len必须是year,month,day,hours,minutes,seconds其中的一个'); } }
大功告成。