javascript日期格式化

前言:在写这篇文章之前,对日期格式可谓是基本不懂,但是毕竟是入门小白,每件事都要自己做一遍才知道,所以在下面的代码中有任何不足之处,还请指教。


一、日期格式化方法

    直接上代码:
Date.prototype.Format = function(fmt) {
  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(fmt)){
    fmt = fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4-RegExp.$1.length));
  }

  for(var k in o){
    if(new RegExp("("+k+")").test(fmt)){
      fmt = fmt.replace(RegExp.$1,(RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    }
  }
  return fmt;
}

这串代码是我借鉴网上大神的作品,但是在实现的过程中,也找了一些我自己不理解的地方。

二、自己的不足之处

  • 首先在对函数的设计上,之前的我是不知道要这样来做设计的。

  • 第二,对于Date()对象的理解不够深刻,对于它内部的格式也是半知半懂。

  • 三,对于replace方法,运用的不够巧妙。

  • 四,正则的使用,对于RegExp.$1这个完全不知道什么意思,很惭愧。

三、总结

  1. 对于函数的原型设计方面,多学多看多写,最近也有认真的在学对象方法,以后在写函数时,多注意使用对象、原型来实现。
  2. 对于Date()方法,主要还是运用的比较少,相信多使用,还是可以熟知的。
  3. 对于String的很多方法,多用多学,多看案例。
  4. 还有一个很重要的就是正则的知识,最近也看的比较多,希望可以有些长进。

RegExp.$n 理解

RegExp.$1...$9属性用于返回正则表达式模式中某个子表达式匹配的文本。

正则表达式中每个小括号内的部分表达式就是一个子表达式。

该属性是RegExp全局对象的一个只读属性,所有主流浏览器均支持该属性。
语法:
RegExp.$n
n的值介于 [1, 9] 之间,表示第n个子表达式所匹配的文本内容。例如,RegExp.$1表示第一个子表达式所匹配的文本内容。
RegExp.$1...$9属性的值为String类型,返回上一次正则表达式匹配中,第n个子表达式所匹配的文本。
虽然正则表达式模式中的小括号可以有任意多个,但是此属性只保存最前面的9个匹配文本。

注意:这里的RegExp是全局对象,RegExp.$1...$9是全局属性。当执行任意正则表达式匹配操作时,JavaScript会自动更新全局对象RegExp上的全局属性,用以存储此次正则表达式模式的匹配结果。当再次执行正则表达式匹配时,RegExp上的全局属性又会更新,覆盖掉之前的存储数据,以反映本次正则表达式模式的匹配结果。

示例&说明

var str = "X98Y87Z65";
// 三个数字部分加了小括号,表示子表达式
var reg = /^X(\d+)Y(\d+)Z(\d+)$/;
reg.test(str); // 此处使用exec()等其他正则表达式的匹配方法也可,下同
document.writeln(RegExp.$1); // 98
document.writeln(RegExp.$2); // 87
document.writeln(RegExp.$3); // 65

str = '<a href="http://www.365mini.com/" title="首页" target="_blank">CodePlayer</a>';
// 提取URL
reg = /<a\s[^>]*href="([^">]+)"[^>]*>/;
reg.exec(str);
document.writeln(RegExp.$1); // http://www.365mini.com/

猜你喜欢

转载自blog.csdn.net/wangdan_2013/article/details/79138299
今日推荐