zl程序教程

您现在的位置是:首页 >  后端

当前栏目

js时间函数应用加、减、比较、格式转换的示例代码

JS转换应用代码 函数 时间 示例 比较
2023-06-13 09:15:04 时间

复制代码代码如下:


//JavaScriptDocument
//---------------------------------------------------
//判断闰年
//---------------------------------------------------
Date.prototype.isLeapYear=function(){
return(0==this.getYear()%4&&((this.getYear()%100!=0)||(this.getYear()%400==0)));
}

//---------------------------------------------------
//日期格式化
//格式YYYY/yyyy/YY/yy表示年份
//MM/M月份
//W/w星期
//dd/DD/d/D日期
//hh/HH/h/H时间
//mm/m分钟
//ss/SS/s/S秒
//---------------------------------------------------
//对Date的扩展,将Date转化为指定格式的String
//月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q)可以用1-2个占位符,
//年(y)可以用1-4个占位符,毫秒(S)只能用1个占位符(是1-3位的数字)
//例子:
//(newDate()).Format("yyyy-MM-ddhh:mm:ss.S")==>2006-07-0208:09:04.423
//(newDate()).Format("yyyy-M-dh:m:s.S")==>2006-7-28:9:4.18
Date.prototype.Format=function(fmt)
{//author:meizz
varo={
"M+":this.getMonth()+1,//月份
"d+":this.getDate(),//日
"h+":this.getHours(),//小时
"H+":this.getHours(),//小时
"m+":this.getMinutes(),//分
"s+":this.getSeconds(),//秒
"q+":Math.floor((this.getMonth()+3)/3),//季度
"S":this.getMilliseconds()//毫秒
};
if(/(y+)/.test(fmt))
fmt=fmt.replace(RegExp.$1,(this.getFullYear()+"").substr(4-RegExp.$1.length));
for(varkino)
if(newRegExp("("+k+")").test(fmt))
fmt=fmt.replace(RegExp.$1,(RegExp.$1.length==1)?(o[k]):(("00"+o[k]).substr((""+o[k]).length)));
returnfmt;
}

/**
*对Date的扩展,将Date转化为指定格式的String
*月(M)、日(d)、12小时(h)、24小时(H)、分(m)、秒(s)、周(E)、季度(q)可以用1-2个占位符
*年(y)可以用1-4个占位符,毫秒(S)只能用1个占位符(是1-3位的数字)
*eg:
*(newDate()).pattern("yyyy-MM-ddhh:mm:ss.S")==>2006-07-0208:09:04.423
*(newDate()).pattern("yyyy-MM-ddEHH:mm:ss")==>2009-03-10二20:09:04
*(newDate()).pattern("yyyy-MM-ddEEhh:mm:ss")==>2009-03-10周二08:09:04
*(newDate()).pattern("yyyy-MM-ddEEEhh:mm:ss")==>2009-03-10星期二08:09:04
*(newDate()).pattern("yyyy-M-dh:m:s.S")==>2006-7-28:9:4.18
*/
Date.prototype.pattern=function(fmt){
varo={
"M+":this.getMonth()+1,//月份
"d+":this.getDate(),//日
"h+":this.getHours()%12==0?12:this.getHours()%12,//小时
"H+":this.getHours(),//小时
"m+":this.getMinutes(),//分
"s+":this.getSeconds(),//秒
"q+":Math.floor((this.getMonth()+3)/3),//季度
"S":this.getMilliseconds()//毫秒
};
varweek={
"0":"/u65e5",
"1":"/u4e00",
"2":"/u4e8c",
"3":"/u4e09",
"4":"/u56db",
"5":"/u4e94",
"6":"/u516d"
};
if(/(y+)/.test(fmt)){
fmt=fmt.replace(RegExp.$1,(this.getFullYear()+"").substr(4-RegExp.$1.length));
}
if(/(E+)/.test(fmt)){
fmt=fmt.replace(RegExp.$1,((RegExp.$1.length>1)?(RegExp.$1.length>2?"/u661f/u671f":"/u5468"):"")+week[this.getDay()+""]);
}
for(varkino){
if(newRegExp("("+k+")").test(fmt)){
fmt=fmt.replace(RegExp.$1,(RegExp.$1.length==1)?(o[k]):(("00"+o[k]).substr((""+o[k]).length)));
}
}
returnfmt;
}

//+---------------------------------------------------
//|求两个时间的天数差日期格式为YYYY-MM-dd
//+---------------------------------------------------
functiondaysBetween(DateOne,DateTwo)
{
varOneMonth=DateOne.substring(5,DateOne.lastIndexOf("-"));
varOneDay=DateOne.substring(DateOne.length,DateOne.lastIndexOf("-")+1);
varOneYear=DateOne.substring(0,DateOne.indexOf("-"));

varTwoMonth=DateTwo.substring(5,DateTwo.lastIndexOf("-"));
varTwoDay=DateTwo.substring(DateTwo.length,DateTwo.lastIndexOf("-")+1);
varTwoYear=DateTwo.substring(0,DateTwo.indexOf("-"));
varcha=((Date.parse(OneMonth+"/"+OneDay+"/"+OneYear)-Date.parse(TwoMonth+"/"+TwoDay+"/"+TwoYear))/86400000);
returnMath.abs(cha);
}

//+---------------------------------------------------
//|日期计算
//+---------------------------------------------------
Date.prototype.DateAdd=function(strInterval,Number){
vardtTmp=this;
switch(strInterval){
case"s":returnnewDate(dtTmp.getFullYear(),(dtTmp.getMonth()),dtTmp.getDate(),dtTmp.getHours(),dtTmp.getMinutes(),dtTmp.getSeconds()+Number);//秒
case"n":returnnewDate(dtTmp.getFullYear(),(dtTmp.getMonth()),dtTmp.getDate(),dtTmp.getHours(),dtTmp.getMinutes()+Number,dtTmp.getSeconds());//分
case"h":returnnewDate(dtTmp.getFullYear(),(dtTmp.getMonth()),dtTmp.getDate(),dtTmp.getHours()+Number,dtTmp.getMinutes(),dtTmp.getSeconds());//时
case"d":returnnewDate(dtTmp.getFullYear(),(dtTmp.getMonth()),dtTmp.getDate()+Number,dtTmp.getHours(),dtTmp.getMinutes(),dtTmp.getSeconds());//天
case"w":returnnewDate(dtTmp.getFullYear(),(dtTmp.getMonth()),dtTmp.getDate()+Number*7,dtTmp.getHours(),dtTmp.getMinutes(),dtTmp.getSeconds());//周
case"q":returnnewDate(dtTmp.getFullYear(),(dtTmp.getMonth())+Number*3,dtTmp.getDate(),dtTmp.getHours(),dtTmp.getMinutes(),dtTmp.getSeconds());//季度
case"m":returnnewDate(dtTmp.getFullYear(),(dtTmp.getMonth())+Number,dtTmp.getDate(),dtTmp.getHours(),dtTmp.getMinutes(),dtTmp.getSeconds());//月
case"y":returnnewDate((dtTmp.getFullYear()+Number),dtTmp.getMonth(),dtTmp.getDate(),dtTmp.getHours(),dtTmp.getMinutes(),dtTmp.getSeconds());//年
}
}

//+---------------------------------------------------
//|比较日期差dtEnd格式为日期型或者有效日期格式字符串
//+---------------------------------------------------
Date.prototype.DateDiff=function(strInterval,dtEnd){
vardtStart=this;
if(typeofdtEnd=="string")//如果是字符串转换为日期型
{
dtEnd=StringToDate(dtEnd);
}
switch(strInterval){
case"s":returnparseInt((dtEnd-dtStart)/1000);
case"n":returnparseInt((dtEnd-dtStart)/60000);
case"h":returnparseInt((dtEnd-dtStart)/3600000);
case"d":returnparseInt((dtEnd-dtStart)/86400000);
case"w":returnparseInt((dtEnd-dtStart)/(86400000*7));
case"m":return(dtEnd.getMonth()+1)+((dtEnd.getFullYear()-dtStart.getFullYear())*12)-(dtStart.getMonth()+1);
case"y":returndtEnd.getFullYear()-dtStart.getFullYear();
}
}

//+---------------------------------------------------
//|日期输出字符串,重载了系统的toString方法
//+---------------------------------------------------
Date.prototype.toString=function(showWeek)
{
varmyDate=this;
varstr=myDate.toLocaleDateString();
if(showWeek)
{
varWeek=["日","一","二","三","四","五","六"];
str+="星期"+Week[myDate.getDay()];
}
returnstr;
}

//+---------------------------------------------------
//|日期合法性验证
//|格式为:YYYY-MM-DD或YYYY/MM/DD
//+---------------------------------------------------
functionIsValidDate(DateStr)
{
varsDate=DateStr.replace(/(^\s+|\s+$)/g,"");//去两边空格;
if(sDate=="")returntrue;
//如果格式满足YYYY-(/)MM-(/)DD或YYYY-(/)M-(/)DD或YYYY-(/)M-(/)D或YYYY-(/)MM-(/)D就替换为""
//数据库中,合法日期可以是:YYYY-MM/DD(2003-3/21),数据库会自动转换为YYYY-MM-DD格式
vars=sDate.replace(/[\d]{4,4}[\-/]{1}[\d]{1,2}[\-/]{1}[\d]{1,2}/g,"");
if(s=="")//说明格式满足YYYY-MM-DD或YYYY-M-DD或YYYY-M-D或YYYY-MM-D
{
vart=newDate(sDate.replace(/\-/g,"/"));
varar=sDate.split(/[-/:]/);
if(ar[0]!=t.getYear()||ar[1]!=t.getMonth()+1||ar[2]!=t.getDate())
{
//alert("错误的日期格式!格式为:YYYY-MM-DD或YYYY/MM/DD。注意闰年。");
returnfalse;
}
}
else
{
//alert("错误的日期格式!格式为:YYYY-MM-DD或YYYY/MM/DD。注意闰年。");
returnfalse;
}
returntrue;
}

//+---------------------------------------------------
//|日期时间检查
//|格式为:YYYY-MM-DDHH:MM:SS
//+---------------------------------------------------
functionCheckDateTime(str)
{
varreg=/^(\d+)-(\d{1,2})-(\d{1,2})(\d{1,2}):(\d{1,2}):(\d{1,2})$/;
varr=str.match(reg);
if(r==null)returnfalse;
r[2]=r[2]-1;
vard=newDate(r[1],r[2],r[3],r[4],r[5],r[6]);
if(d.getFullYear()!=r[1])returnfalse;
if(d.getMonth()!=r[2])returnfalse;
if(d.getDate()!=r[3])returnfalse;
if(d.getHours()!=r[4])returnfalse;
if(d.getMinutes()!=r[5])returnfalse;
if(d.getSeconds()!=r[6])returnfalse;
returntrue;
}

//+---------------------------------------------------
//|把日期分割成数组
//+---------------------------------------------------
Date.prototype.toArray=function()
{
varmyDate=this;
varmyArray=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();
returnmyArray;
}

//+---------------------------------------------------
//|取得日期数据信息
//|参数interval表示数据类型
//|y年m月d日w星期ww周h时n分s秒
//+---------------------------------------------------
Date.prototype.DatePart=function(interval)
{
varmyDate=this;
varpartStr="";
varWeek=["日","一","二","三","四","五","六"];
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;
}
returnpartStr;
}

//+---------------------------------------------------
//|取得当前日期所在月的最大天数
//+---------------------------------------------------
Date.prototype.MaxDayOfDate=function()
{
varmyDate=this;
varary=myDate.toArray();
vardate1=(newDate(ary[0],ary[1]+1,1));
vardate2=date1.dateAdd(1,"m",1);
varresult=dateDiff(date1.Format("yyyy-MM-dd"),date2.Format("yyyy-MM-dd"));
returnresult;
}

//+---------------------------------------------------
//|字符串转成日期类型
//|格式MM/dd/YYYYMM-dd-YYYYYYYY/MM/ddYYYY-MM-dd
//+---------------------------------------------------
functionStringToDate(DateStr)
{
varconverted=Date.parse(DateStr);
varmyDate=newDate(converted);
if(isNaN(myDate))
{
//vardelimCahar=DateStr.indexOf("/")!=-1?"/":"-";
vararys=DateStr.split("-");
myDate=newDate(arys[0],--arys[1],arys[2]);
}
returnmyDate;
}

页面验证代码
复制代码代码如下:

<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312"/>
<scriptsrc="timedata.js"type="text/javascript"></script>

<scripttype="text/javascript">
varnowtime=newDate();
functionnewdatetime(){
nowtime=nowtime.DateAdd("h",35);
str=nowtime.Format("yyyy-MM-ddHH:mm:ss");
alert(str);

}
</script>

<title>无标题文档</title>
</head>
<body>
<inputtype="button"title="格式化"onclick="newdatetime()"value="点击查看"/>
</body>
</html>