码迷,mamicode.com
首页 > 其他好文 > 详细

Date.format日期转换

时间:2015-03-01 17:07:19      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:

RegExp中的$1...$9属性:

返回在模式匹配期间找到的,所存储的最近9个部分。

每当产生一个带括号的成功匹配时,$1...$9的属性值就会被修改,可以在一个正则表达式中指定任意多个带括号的子匹配,但是最多只能存储9个。

例:

<script type="text/javascript">
	var pattern = /(\w+)@(\w+)\.(\w+)/g,
		str = "Please send mail to george@contoso.com and someone@example.com. Thanks!",
		result = pattern.test(str);
	alert(RegExp.$1+"-"+RegExp.$2+"-"+RegExp.$3);
</script>
打印:george-contoso-com。

RegExp.$1匹配第一个带括号的子匹配,打印:george,依次类推,RegExp.$2匹配第二个带括号的子匹配,所以打印:contoso。
然后分析日期格式转换:

如给定要转换的日期格式为"yyy-MM-dd"。

如果我们要获取这个格式的年份,考虑到RegExp.$1的特性,我们可以通过/(y+)/的方式匹配该格式,获取年份的位数,然后截取当前日期的年份信息后替换即可。

如:

<script type="text/javascript">
	var pattern = "yyy年",
		result = /(y+)/.test(pattern),
		year = String(new Date().getFullYear());
	pattern = pattern.replace(RegExp.$1,year.substr(4-RegExp.$1.length));
	alert(pattern);
</script>
所以,我们可以根据这种方式写出日期转换的代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>

<body>
</body>
<script type="text/javascript">
	Date.prototype.format = function(pattern){
		if(typeof pattern === "undefined" || pattern === null) {
			pattern = "yyyy年MM月dd日 HH时mm分ss秒";
		}
		var val = {
			"M+":this.getMonth() + 1, //月份
			"d+":this.getDate(),  //日
			"H+":this.getHours(), //小时
			"m+":this.getMinutes(),   //分钟
			"s+":this.getSeconds()    //秒
		};
		if(/(y+)/.test(pattern)) {
			var year = String(this.getFullYear());
			pattern = pattern.replace(RegExp.$1,year.substr(4-RegExp.$1.length));
		}
		for(var i in val) {
			if(new RegExp("("+i+")").test(pattern)) {
				//如果只匹配一个值,如果该数<10,那么不加0,否则仍然为两位数,否则如果为2位数,<10则补0
				var temp = (RegExp.$1.length === 1)?val[i]:("00"+val[i]).substr(String(val[i]).length);
				pattern = pattern.replace(RegExp.$1,temp);
			}
		}
		return pattern;
	};
	alert(new Date().format("yyy年M月"));
</script>
</html>


Date.format日期转换

标签:

原文地址:http://blog.csdn.net/xuzengqiang2/article/details/44003345

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!