1F js 日期时间函数 jastby Post by : 2009-06-25 10:40:18.0
Date.prototype.isLeapYear 判断闰年
Date.prototype.Format 日期格式化
Date.prototype.DateAdd 日期计算
Date.prototype.DateDiff 比较日期差
Date.prototype.toString 日期转字符串
Date.prototype.toArray 日期分割为数组
Date.prototype.DatePart 取日期的部分信息
Date.prototype.MaxDayOfDate 取日期所在月的最大天数
Date.prototype.WeekNumOfYear 判断日期所在年的第几周
StringToDate 字符串转日期型
IsValidDate 验证日期有效性
CheckDateTime 完整日期时间检查
daysBetween 日期天数差
运行 复制 保存 javascript代码
Date.prototype.isLeapYear = function (){
return (0== this .getFullYear()%4&&(( this .getFullYear()%100!=0)||( this .getFullYear()%400==0)));
}
Date.prototype.Format = function (formatStr){
var str = formatStr;
var Week = [ '日' , '一' , '二' , '三' , '四' , '五' , '六' ];
str=str.replace(/yyyy|YYYY/, this .getFullYear());
str=str.replace(/yy|YY/,( this .getFullYear() % 100)>9?( this .getFullYear() % 100).toString(): '0' + ( this .getFullYear() % 100));
str=str.replace(/MM/, this .getMonth()>9? this .getMonth().toString(): '0' + this .getMonth());
str=str.replace(/M/g, this .getMonth());
str=str.replace(/w|W/g,Week[ this .getDay()]);
str=str.replace(/dd|DD/, this .getDate()>9? this .getDate().toString(): '0' + this .getDate());
str=str.replace(/d|D/g, this .getDate());
str=str.replace(/hh|HH/, this .getHours()>9? this .getHours().toString(): '0' + this .getHours());
str=str.replace(/h|H/g, this .getHours());
str=str.replace(/mm/, this .getMinutes()>9? this .getMinutes().toString(): '0' + this .getMinutes());
str=str.replace(/m/g, this .getMinutes());
str=str.replace(/ss|SS/, this .getSeconds()>9? this .getSeconds().toString(): '0' + this .getSeconds());
str=str.replace(/s|S/g, this .getSeconds());
return str;
}
function daysBetween(DateOne,DateTwo){
var OneMonth = DateOne.substring(5,DateOne.lastIndexOf ( '-' ));
var OneDay = DateOne.substring(DateOne.length,DateOne.lastIndexOf ( '-' )+1);
var OneYear = DateOne.substring(0,DateOne.indexOf ( '-' ));
var TwoMonth = DateTwo.substring(5,DateTwo.lastIndexOf ( '-' ));
var TwoDay = DateTwo.substring(DateTwo.length,DateTwo.lastIndexOf ( '-' )+1);
var TwoYear = DateTwo.substring(0,DateTwo.indexOf ( '-' ));
var cha=((Date.parse(OneMonth+ '/' +OneDay+ '/' +OneYear)- Date.parse(TwoMonth+ '/' +TwoDay+ '/' +TwoYear))/86400000);
return Math.abs(cha);
}
Date.prototype.DateAdd = function (strInterval, Number){
var dtTmp = this ;
switch (strInterval){
case 's' : return new Date(Date.parse(dtTmp) + (1000 * Number));
case 'n' : return new Date(Date.parse(dtTmp) + (60000 * Number));
case 'h' : return new Date(Date.parse(dtTmp) + (3600000 * Number));
case 'd' : return new Date(Date.parse(dtTmp) + (86400000 * Number));
case 'w' : return new Date(Date.parse(dtTmp) + ((86400000 * 7) * Number));
case 'q' : return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number*3, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());
case 'm' : return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());
case 'y' : return new Date((dtTmp.getFullYear() + Number), dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());
}
}
Date.prototype.DateDiff = function (strInterval, dtEnd){
var dtStart = this ;
if ( typeof dtEnd == 'string' ){
dtEnd = StringToDate(dtEnd);
}
switch (strInterval) {
case 's' : return parseInt((dtEnd - dtStart) / 1000);
case 'n' : return parseInt((dtEnd - dtStart) / 60000);
case 'h' : return parseInt((dtEnd - dtStart) / 3600000);
case 'd' : return parseInt((dtEnd - dtStart) / 86400000);
case 'w' : return parseInt((dtEnd - dtStart) / (86400000 * 7));
case 'm' : return (dtEnd.getMonth()+1)+((dtEnd.getFullYear()-dtStart.getFullYear())*12) - (dtStart.getMonth()+1);
case 'y' : return dtEnd.getFullYear() - dtStart.getFullYear();
}
}
Date.prototype.toString = function (showWeek){
var myDate= this ;
var str = myDate.toLocaleDateString();
if (showWeek) {
var Week = [ '日' , '一' , '二' , '三' , '四' , '五' , '六' ];
str += ' 星期' + Week[myDate.getDay()];
}
return str;
}
function IsValidDate(DateStr){
var sDate=DateStr.replace(/(^\s+|\s+$)/g, '' );
if (sDate== '' ) return true ;
var s = sDate.replace(/[\d]{ 4,4 }[\-/]{ 1 }[\d]{ 1,2 }[\-/]{ 1 }[\d]{ 1,2 }/g, '' );
if (s== '' ){
var t= new Date(sDate.replace(/\-/g, '/' ));
var ar = sDate.split(/[-/:]/);
if (ar[0] != t.getFullYear() || ar[1] != t.getMonth()+1 || ar[2] != t.getDate()){
return false ;
}
}
else {
return false ;
}
return true ;
}
function CheckDateTime(str){
var reg = /^(\d+)-(\d{ 1,2 })-(\d{ 1,2 }) (\d{ 1,2 }):(\d{ 1,2 }):(\d{ 1,2 })$/;
var r = str.match(reg);
if (r== null ) return false ;
r[2]=r[2]-1;
var d= new Date(r[1],r[2],r[3],r[4],r[5],r[6]);
if (d.getFullYear()!=r[1]) return false ;
if (d.getMonth()!=r[2]) return false ;
if (d.getDate()!=r[3]) return false ;
if (d.getHours()!=r[4]) return false ;
if (d.getMinutes()!=r[5]) return false ;
if (d.getSeconds()!=r[6]) return false ;
return true ;
}
Date.prototype.toArray = function (){
var myDate = this ;
var myArray = Array();
myArray[0] = myDate.getFullYear();
myArray[1] = myDate.getMonth();
myArray[2] = myDate.getDate();
myArray[3] = myDate.getHours();
myArray[4] = myDate.getMinutes();
myArray[5] = myDate.getSeconds();
return myArray;
}
Date.prototype.DatePart = function (interval){
var myDate = this ;
var partStr= '' ;
var Week = [ '日' , '一' , '二' , '三' , '四' , '五' , '六' ];
switch (interval){
case 'y' :partStr = myDate.getFullYear(); break ;
case 'm' :partStr = myDate.getMonth()+1; break ;
case 'd' :partStr = myDate.getDate(); break ;
case 'w' :partStr = Week[myDate.getDay()]; break ;
case 'ww' :partStr = myDate.WeekNumOfYear(); break ;
case 'h' :partStr = myDate.getHours(); break ;
case 'n' :partStr = myDate.getMinutes(); break ;
case 's' :partStr = myDate.getSeconds(); break ;
}
return partStr;
}
Date.prototype.MaxDayOfDate = function (){
var myDate = this ;
var ary = myDate.toArray();
var date1 = ( new Date(ary[0],ary[1]+1,1));
var date2 = date1.dateAdd(1, 'm' ,1);
var result = dateDiff(date1.Format( 'yyyy-MM-dd' ),date2.Format( 'yyyy-MM-dd' ));
return result;
}
Date.prototype.WeekNumOfYear = function (){
var myDate = this ;
var ary = myDate.toArray();
var year = ary[0];
var month = ary[1]+1;
var day = ary[2];
document.write( '< script language=VBScript\> \n' );
document.write( 'myDate = DateValue(' '+month+' - '+day+' - '+year+' ') \n' );
document.write( 'result = DatePart(' ww ', myDate) \n' );
document.write( ' \n' );
return result;
}
function StringToDate(DateStr){
var converted = Date.parse(DateStr);
var myDate = new Date(converted);
if (isNaN(myDate)){
var arys= DateStr.split( '-' );
myDate = new Date(arys[0],--arys[1],arys[2]);
}
return myDate;
}