将时间日期格式化为yyyy-MM-dd格式代码实例

快乐打工仔 分类:实例代码

本章节介绍一个能够格式化时间日期的代码,能够比较灵活的实现对时间日期格式化效果。

代码实例如下:

Date.prototype.format = function(format){
  var o={
    "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+)/.test(format)){
    format=format.replace(RegExp.$1,(this.getFullYear()+"").substr(4-RegExp.$1.length));
  }
  for(var k in o)if(new RegExp("("+ k +")").test(format))
  format=format.replace(RegExp.$1,RegExp.$1.length==1?o[k]:("00"+ o[k]).substr((""+o[k]).length));
  return format;
}
var d=new Date();
console.log(d.format('yyyy-MM-dd'));

上面的代码实现了时间日期格式化效果,下面介绍一下它的实现过程。

一.代码注释:

1.Date.prototype.format=function(format){},为Date对象实例添加format()方法,参数是时间日期格式。

2.var o={

  "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()

}

对象直接量中的属性名称设计的恰好可以作为正则表达式,加号可以作为正则中的重复两次,表示匹配一次或者多次前面的字符,属性值则是对应的时间日期值,年份没有在此对象中是进行的单独处理,之所以这样是因为年份最高是4位,而其他的最高是2位。

3.if(/(y+)/.test(format)){format=format.replace(RegExp.$1,(this.getFullYear()+"").substr(4-RegExp.$1.length));},将格式中的"y"替换为年份,当然也会根据y的数目截取指定数目的年份字符串,比如"yy",那么返回的年份就是"14"这样的字符串。

4.for(var k in o)if(new RegExp("("+ k +")").test(format))

format=format.replace(RegExp.$1,RegExp.$1.length==1?o[k] : ("00"+ o[k]).substr((""+o[k]).length))

上面的代码其实是简化的写法,完整的写法如下:

for(var k in o){

  if(new RegExp("("+ k +")").test(format)){

    format=format.replace(RegExp.$1,RegExp.$1.length==1?o[k] : ("00"+ o[k]).substr((""+o[k]).length));

  }

}

遍历对象直接量中的每一个属性,进行相应的操作。

if(new RegExp("("+ k +")").test(format)),这个是判断格式字符串中是否有相应的字符串变量中对应的时间日期格式,比如"yyyy-MM-dd"格式字符串就有"M+"和"d+"。

format=format.replace(RegExp.$1,RegExp.$1.length==1?o[k] : ("00"+ o[k]).substr((""+o[k]).length)),此代码就是根据格式字符串进行相应的日期格式操作。

5. return format,返回格式化后的时间日期字符串。

二.相关阅读:

1.关于Date对象相关方法可以参阅JavaScript Date对象一章节。 

2.replace()函数可以参阅正则表达式replace()一章节。

3.substr()函数可以参阅javascript substr()一章节。

4.三元运算符可以参阅三元运算符一章节。 

将时间日期格式化为yyyy-MM-dd格式代码实例,这样的场景在实际项目中还是用的比较多的,关于将时间日期格式化为yyyy-MM-dd格式代码实例就介绍到这了。

将时间日期格式化为yyyy-MM-dd格式代码实例属于前端实例代码,有关更多实例代码大家可以查看

回复

我来回复
  • 暂无回复内容