大家好,今天来为大家解答js计算时间差这个问题的一些问题点,包括js时间加减也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~
本文目录
一、js两个日期比较相差多少天实例
首先来分析一个问题,两个日期是什么格式的?假设是字符串格式:
可能是:2018/04/20,也可能是:2018/04/20 12:00:00
首先看看不含时间部分的日期格式计算:
varaDate=newDate('2018/04/23');//通过日期字符串,初始化之一个日期对象
varbDate=newDate('2018/04/25');//同上,初始化第二个日期对象
varaDay=24*60*60*1000;//完整一天有24小时,将小时换算成毫秒时间戳
vardiffDay=(bDate-aDate)/aDay;//计算间隔天数(注意日期隐式转换)
console.log(diffDay);//2,23日-25日间隔2天
然后再来看看包含时间部分的日期格式计算:
然后再来看看包含时间部分的日期格式计算:
varaDate=newDate('2018/04/23');
varbDate=newDate('2018/04/2512:00:00');//包含时间的日期字符串
vardiffDay=(bDate-aDate)/aDay;
console.log(diffDay);//2.5,自然计算的结果
console.log(Math.floor(diffDay));//2,根据个人情况向下取整,整数天
console.log(Math.ceil(diffDay));//3,根据个人情况向上取整,整数天
希望是你想要的结果,如有疑问请追问。
希望是你想要的结果,如有疑问请追问。
二、js如何获取时间
myDate.getYear();//获取当前年份(2位)
myDate.getFullYear();//获取完整的年份(4位,1970-????)
myDate.getMonth();//获取当前月份(0-11,0代表1月)
myDate.getDate();//获取当前日(1-31)
myDate.getDay();//获取当前星期X(0-6,0代表星期天)
myDate.getTime();//获取当前时间(从1970.1.1开始的毫秒数)
myDate.getHours();//获取当前小时数(0-23)
myDate.getMinutes();//获取当前分钟数(0-59)
myDate.getSeconds();//获取当前秒数(0-59)
myDate.getMilliseconds();//获取当前毫秒数(0-999)
myDate.toLocaleDateString();//获取当前日期
var mytime=myDate.toLocaleTimeString();//获取当前时间
myDate.toLocaleString();//获取日期与时间
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判断日期所在年的第几周
//---------------------------------------------------
//---------------------------------------------------
Date.prototype.isLeapYear= function()
return(0==this.getYear()%4&&((this.getYear()%100!=0)||(this.getYear()%400==0)));
//---------------------------------------------------
//格式 YYYY/yyyy/YY/yy表示年份
//---------------------------------------------------
三、js日期相减求天数 精确到秒
myDate.getYear();//获取当前年份(2位)
myDate.getFullYear();//获取完整的年份(4位,1970-????)
myDate.getMonth();//获取当前月份(0-11,0代表1月)
myDate.getDate();//获取当前日(1-31)
myDate.getDay();//获取当前星期X(0-6,0代表星期天)
myDate.getTime();//获取当前时间(从1970.1.1开始的毫秒数)
myDate.getHours();//获取当前小时数(0-23)
myDate.getMinutes();//获取当前分钟数(0-59)
myDate.getSeconds();//获取当前秒数(0-59)
myDate.getMilliseconds();//获取当前毫秒数(0-999)
myDate.toLocaleDateString();//获取当前日期
varmytime=myDate.toLocaleTimeString();//获取当前时间
myDate.toLocaleString();//获取日期与时间
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判断日期所在年的第几周
//---------------------------------------------------
//---------------------------------------------------
Date.prototype.isLeapYear=function()
return(0==this.getYear()%4&&((this.getYear()%100!=0)||(this.getYear()%400==0)));
//---------------------------------------------------
//---------------------------------------------------
Date.prototype.Format=function(formatStr)
varWeek=['日','一','二','三','四','五','六'];
str=str.replace(/yyyy|YYYY/,this.getFullYear());
str=str.replace(/yy|YY/,(this.getYear()%100)>9?(this.getYear()%100).toString():'0'+(this.getYear()%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());
//+---------------------------------------------------
//|求两个时间的天数差日期格式为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);
//+---------------------------------------------------
//+---------------------------------------------------
Date.prototype.DateAdd=function(strInterval,Number){
case's':returnnewDate(Date.parse(dtTmp)+(1000*Number));
case'n':returnnewDate(Date.parse(dtTmp)+(60000*Number));
case'h':returnnewDate(Date.parse(dtTmp)+(3600000*Number));
case'd':returnnewDate(Date.parse(dtTmp)+(86400000*Number));
case'w':returnnewDate(Date.parse(dtTmp)+((86400000*7)*Number));
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){
if(typeofdtEnd=='string')//如果是字符串转换为日期型
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)
varstr=myDate.toLocaleDateString();
varWeek=['日','一','二','三','四','五','六'];
str+='星期'+Week[myDate.getDay()];
//+---------------------------------------------------
//|格式为:YYYY-MM-DD或YYYY/MM/DD
//+---------------------------------------------------
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,'/'));
if(ar[0]!=t.getYear()||ar[1]!=t.getMonth()+1||ar[2]!=t.getDate())
//alert('错误的日期格式!格式为:YYYY-MM-DD或YYYY/MM/DD。注意闰年。');
//alert('错误的日期格式!格式为:YYYY-MM-DD或YYYY/MM/DD。注意闰年。');
//+---------------------------------------------------
//+---------------------------------------------------
varreg=/^(\d+)-(\d{1,2})-(\d{1,2})(\d{1,2}):(\d{1,2}):(\d{1,2})$/;
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;
//+---------------------------------------------------
//+---------------------------------------------------
Date.prototype.toArray=function()
myArray[0]=myDate.getFullYear();
myArray[4]=myDate.getMinutes();
myArray[5]=myDate.getSeconds();
//+---------------------------------------------------
//|y年m月d日w星期ww周h时n分s秒
//+---------------------------------------------------
Date.prototype.DatePart=function(interval)
varWeek=['日','一','二','三','四','五','六'];
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;
//+---------------------------------------------------
//|取得当前日期所在月的更大天数
//+---------------------------------------------------
Date.prototype.MaxDayOfDate=function()
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'));
//+---------------------------------------------------
//|取得当前日期所在周是一年中的第几周
//+---------------------------------------------------
Date.prototype.WeekNumOfYear=function()
document.write('<scriptlanguage=VBScript\>\n');
document.write('myDate=Datue(''+month+'-'+day+'-'+year+'')\n');
document.write('result=DatePart('ww',myDate)\n');
//+---------------------------------------------------
//|格式MM/dd/YYYYMM-dd-YYYYYYYY/MM/ddYYYY-MM-dd
//+---------------------------------------------------
varconverted=Date.parse(DateStr);
//vardelimCahar=DateStr.indexOf('/')!=-1?'/':'-';
vararys=DateStr.split('-');
myDate=newDate(arys[0],--arys[1],arys[2]);
若要显示:当前日期加时间(如:2009-06-1212:00)
varyear=now.getFullYear();//年
varmonth=now.getMonth()+1;//月
if(mm<10)clock+='0';
这是我博客里的一篇文章。上边有清晰的思路。你自己改改。
关于js计算时间差的内容到此结束,希望对大家有所帮助。