[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);
}


使用方法(只支持日期部分,当然要先引用<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);

Birdshome写过URL的工具类,忘了有没有写Date的了。。。

posted @ 2006-09-29 17:57  Think  阅读(22319)  评论(2编辑  收藏  举报