[JS]格式化Date和分析格式化Date字符串的JS代码
最近打算重构DateChooser控件,使用ASP.NET2.0新特性,不使用HTC以更好支持Cross-browser,先写了个日期格式的JS文件,欢迎大家使用
//Date.js
Date.prototype.format = function(formatter)
{
if(!formatter || formatter == "")
{
formatter = "yyyy-MM-dd";
}
var year = this.getYear().toString();
var month = (this.getMonth() + 1).toString();
var day = this.getDate().toString();
var yearMarker = formatter.replace(/[^y|Y]/g,'');
if(yearMarker.length == 2)
{
year = year.substring(2,4);
}
var monthMarker = formatter.replace(/[^m|M]/g,'');
if(monthMarker.length > 1)
{
if(month.length == 1)
{
month = "0" + month;
}
}
var dayMarker = formatter.replace(/[^d]/g,'');
if(dayMarker.length > 1)
{
if(day.length == 1)
{
day = "0" + day;
}
}
return formatter.replace(yearMarker,year).replace(monthMarker,month).replace(dayMarker,day);
}
Date.parseString = function(dateString,formatter)
{
var today = new Date();
if(!dateString || dateString == "")
{
return today;
}
if(!formatter || formatter == "")
{
formatter = "yyyy-MM-dd";
}
var yearMarker = formatter.replace(/[^y|Y]/g,'');
var monthMarker = formatter.replace(/[^m|M]/g,'');
var dayMarker = formatter.replace(/[^d]/g,'');
var yearPosition = formatter.indexOf(yearMarker);
var yearLength = yearMarker.length;
var year = dateString.substring(yearPosition ,yearPosition + yearLength) * 1;
if( yearLength == 2)
{
if(year < 50 )
{
year += 2000;
}
else
{
year += 1900;
}
}
var monthPosition = formatter.indexOf(monthMarker);
var month = dateString.substring(monthPosition,monthPosition + monthMarker.length) * 1 - 1;
var dayPosition = formatter.indexOf(dayMarker);
var day = dateString.substring( dayPosition,dayPosition + dayMarker.length )* 1;
return new Date(year,month,day);
}
Date.prototype.format = function(formatter)
{
if(!formatter || formatter == "")
{
formatter = "yyyy-MM-dd";
}
var year = this.getYear().toString();
var month = (this.getMonth() + 1).toString();
var day = this.getDate().toString();
var yearMarker = formatter.replace(/[^y|Y]/g,'');
if(yearMarker.length == 2)
{
year = year.substring(2,4);
}
var monthMarker = formatter.replace(/[^m|M]/g,'');
if(monthMarker.length > 1)
{
if(month.length == 1)
{
month = "0" + month;
}
}
var dayMarker = formatter.replace(/[^d]/g,'');
if(dayMarker.length > 1)
{
if(day.length == 1)
{
day = "0" + day;
}
}
return formatter.replace(yearMarker,year).replace(monthMarker,month).replace(dayMarker,day);
}
Date.parseString = function(dateString,formatter)
{
var today = new Date();
if(!dateString || dateString == "")
{
return today;
}
if(!formatter || formatter == "")
{
formatter = "yyyy-MM-dd";
}
var yearMarker = formatter.replace(/[^y|Y]/g,'');
var monthMarker = formatter.replace(/[^m|M]/g,'');
var dayMarker = formatter.replace(/[^d]/g,'');
var yearPosition = formatter.indexOf(yearMarker);
var yearLength = yearMarker.length;
var year = dateString.substring(yearPosition ,yearPosition + yearLength) * 1;
if( yearLength == 2)
{
if(year < 50 )
{
year += 2000;
}
else
{
year += 1900;
}
}
var monthPosition = formatter.indexOf(monthMarker);
var month = dateString.substring(monthPosition,monthPosition + monthMarker.length) * 1 - 1;
var dayPosition = formatter.indexOf(dayMarker);
var day = dateString.substring( dayPosition,dayPosition + dayMarker.length )* 1;
return new Date(year,month,day);
}
使用方法(只支持日期部分,当然要先引用<script src="THIN/ClientFiles/Date.js" type="text/javascript"></script>):
alert(Date.parseString(new Date().format("MM月dd日yy年"),"MM月dd日yy年"));
var today = new Date();
var todayString = today.format("yyyy-MM-dd");
alert(todayString);
var parsedDate = Date.parseString(todayString);
alert(parsedDate);
var today = new Date();
var todayString = today.format("yyyy-MM-dd");
alert(todayString);
var parsedDate = Date.parseString(todayString);
alert(parsedDate);
Birdshome写过URL的工具类,忘了有没有写Date的了。。。