开发工具与关键技术:VS 后端
作者:陈芝番
撰写时间:2019.7.24
在做项目的时候遇到一个问题:如何获取当天时间+具体天数=获取指定日期。那就是对具体时间进行加减等。
对指定日期进行加减做法如下:
Html部分:
<h2>对指定日期进行加减</h2>
<p id='setXDate1'>获取当前日期,增加7天:<p>
<p id='setXDate2'>获取当前日期,增加7年:<p>
Js部分:innerHTML可以重绘页面的一部分,用innerHTML代替DOM操作,减少DOM操作次数,优化javascript性能。
this.getElement("setXDate1").innerHTML = "获取当前日期,增加7天:" + this.setXDate(d, 0 , 0, 7);
this.getElement("setXDate2").innerHTML = "获取当前日期,增加7年:" + this.setXDate(d, 7);
对指定日期进行加减
_DM.setXDate = function(date, xY, xM, xD, xh, xm, xs){
xY = xY || 0;
xM = xM || 0;
xD = xD || 0;
xh = xh || 0;
xm = xm || 0;
xs = xs || 0;
//如果存在年的差值,则计算
if(xY){
date.setFullYear(date.getFullYear() + xY);
}
//如果存在月的差值,则计算
if(xM){
date.setMonth(date.getMonth() + xM);}
//如果存在日的差值,则计算
if(xD){
date.setDate(date.getDate() + xD);
}
//如果存在时的差值,则计算
if(xh){
date.setHours(date.getHours() + xh);
}
//如果存在分的差值,则计算
if(xm){
date.setMinutes(date.getMinutes() + xm);
}
//如果存在秒的差值,则计算
if(xs){
date.setSeconds(date.getSeconds() + xs);
}
return date.format("YYYY-MM-DD h:m:s")
}
对指定日期进行加减效果如下:
或者对时间延伸发展:获取指定日期所在周是第几周,比较两个日期的差等。
获取指定日期所在周是第几周:
Html 部分:
<h2>获取指定日期所在周是第几周</h2>
<p id='getHowManyWeeks'></p>
Js部分:
this.getElement("getHowManyWeeks").innerHTML="第" + this.getHowManyWeeks("2014", "1", "6") +"周";
//获取指定日期所在周是第几周
_DM.getHowManyWeeks = function(Y, M, D){
//总天数
var totalDays = 0,
//默认开始为第1个月
i = 1;
//计算总天数
for(; i < M ; i++){
totalDays += this.getMonthDays(Y, M);
}
totalDays += D;
//除以7,向上取数,计算第几周
return Math.ceil(totalDays/7);}
效果如下:
比较两个日期的差:
Html部分:
<h2>比较两个日期的差</h2>
<p id='getDateDifferenceValue'>2014年6月3日与2014年6月4日差值:<p>
Js部分:
//比较两个日期的差
this.getElement("getDateDifferenceValue").innerHTML = "2014年6月3日与2014年6月4日差值" + this.getDateDifferenceValue(
{
"Y":"2014",
"M":"6",
"D":"3"
},
{
"Y":"2014",
"M":"6",
"D":"4"
}) + "秒";
//比较两个日期的差
_DM.getDateDifferenceValue = function(date1,date2){
var d1 = new Date(date1.Y || 0, (date1.M-1) || 0, date1.D || 1, date1.h || 0, date1.m || 0, date1.s || 0).getTime(),
d2 = new Date(date2.Y || 0, (date2.M-1) || 0, date2.D || 1, date2.h || 0, date2.m || 0, date2.s || 0).getTime();
return (d1 - d2)/1000;}
比较两个日期的差,效果如下:
结语:处理日期加减,比较两个日期的差,获取指定日期所在的周是第几周。