DateFormat = (function(){
var SIGN_REGEXP = /([yMdhsm])(\1*)/g;
var DEFAULT_PATTERN = 'yyyy-MM-dd';
function padding(s,len){
var len =len - (s+'').length;
for(var i=0;i<len;i++){s = '0'+ s;}
return s;
};
return({
format: function(date,pattern){
pattern = pattern||DEFAULT_PATTERN;
return pattern.replace(SIGN_REGEXP,function($0){
switch($0.charAt(0)){
case 'y' : return padding(date.getFullYear(),$0.length);
case 'M' : return padding(date.getMonth()+1,$0.length);
case 'd' : return padding(date.getDate(),$0.length);
case 'w' : return date.getDay()+1;
case 'h' : return padding(date.getHours(),$0.length);
case 'm' : return padding(date.getMinutes(),$0.length);
case 's' : return padding(date.getSeconds(),$0.length);
}
});
},
parse: function(dateString,pattern){
var matchs1=pattern.match(SIGN_REGEXP);
var matchs2=dateString.match(/(\d)+/g);
if(matchs1.length==matchs2.length){
var _date = new Date(1970,0,1);
for(var i=0;i<matchs1.length;i++){
var _int = parseInt(matchs2[i]);
var sign = matchs1[i];
switch(sign.charAt(0)){
case 'y' : _date.setFullYear(_int);break;
case 'M' : _date.setMonth(_int-1);break;
case 'd' : _date.setDate(_int);break;
case 'h' : _date.setHours(_int);break;
case 'm' : _date.setMinutes(_int);break;
case 's' : _date.setSeconds(_int);break;
}
}
return _date;
}
return null;
}
});
})();
//将一个 Date 格式化为日期/时间字符串。
alert( DateFormat.format(new Date(),'yyyy年MM月dd日') );
//从给定字符串的开始分析文本,以生成一个日期。
alert( DateFormat.parse('2010-03-17','yyyy-MM-dd') );
备注:parse方法处理的有点不好,还有点问题。 类似yyyyMMdd之类没有分割的格式无法解析。

本文介绍了一个简单的JavaScript日期格式化和解析方法。该方法能够将日期转换为指定格式的字符串,并能从符合预设格式的字符串中解析出日期对象。但解析功能存在限制,如无法处理未分割的日期格式。
332

被折叠的 条评论
为什么被折叠?



