js中日期的加减法
今天就算对JS中日期的加减法做个总结,一共两步
第一步,引入date.format.js,这个JS的作用是将日期转为指定的格式,代码如下
vardateFormat=function(){
vartoken=/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,
timezone=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic)(?:Standard|Daylight|Prevailing)Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,
timezoneClip=/[^-+\dA-Z]/g,
pad=function(val,len){
val=String(val);
len=len||2;
while(val.length<len)val="0"+val;
returnval;
};
//Regexesandsupportingfunctionsarecachedthroughclosure
returnfunction(date,mask,utc){
vardF=dateFormat;
//Youcan'tprovideutcifyouskipotherargs(usethe"UTC:"maskprefix)
if(arguments.length==1&&Object.prototype.toString.call(date)=="[objectString]"&&!/\d/.test(date)){
mask=date;
date=undefined;
}
//PassingdatethroughDateappliesDate.parse,ifnecessary
date=date?newDate(date):newDate;
if(isNaN(date))throwSyntaxError("invaliddate");
mask=String(dF.masks[mask]||mask||dF.masks["default"]);
//Allowsettingtheutcargumentviathemask
if(mask.slice(0,4)=="UTC:"){
mask=mask.slice(4);
utc=true;
}
var_=utc?"getUTC":"get",
d=date[_+"Date"](),
D=date[_+"Day"](),
m=date[_+"Month"](),
y=date[_+"FullYear"](),
H=date[_+"Hours"](),
M=date[_+"Minutes"](),
s=date[_+"Seconds"](),
L=date[_+"Milliseconds"](),
o=utc?0:date.getTimezoneOffset(),
flags={
d:d,
dd:pad(d),
ddd:dF.i18n.dayNames[D],
dddd:dF.i18n.dayNames[D+7],
m:m+1,
mm:pad(m+1),
mmm:dF.i18n.monthNames[m],
mmmm:dF.i18n.monthNames[m+12],
yy:String(y).slice(2),
yyyy:y,
h:H%12||12,
hh:pad(H%12||12),
H:H,
HH:pad(H),
M:M,
MM:pad(M),
s:s,
ss:pad(s),
l:pad(L,3),
L:pad(L>99?Math.round(L/10):L),
t:H<12?"a":"p",
tt:H<12?"am":"pm",
T:H<12?"A":"P",
TT:H<12?"AM":"PM",
Z:utc?"UTC":(String(date).match(timezone)||[""]).pop().replace(timezoneClip,""),
o:(o>0?"-":"+")+pad(Math.floor(Math.abs(o)/60)*100+Math.abs(o)%60,4),
S:["th","st","nd","rd"][d%10>3?0:(d%100-d%10!=10)*d%10]
};
returnmask.replace(token,function($0){
return$0inflags?flags[$0]:$0.slice(1,$0.length-1);
});
};
}();
//Somecommonformatstrings
dateFormat.masks={
"default":"dddmmmddyyyyHH:MM:ss",
shortDate:"m/d/yy",
mediumDate:"mmmd,yyyy",
longDate:"mmmmd,yyyy",
fullDate:"dddd,mmmmd,yyyy",
shortTime:"h:MMTT",
mediumTime:"h:MM:ssTT",
longTime:"h:MM:ssTTZ",
isoDate:"yyyy-mm-dd",
isoTime:"HH:MM:ss",
isoDateTime:"yyyy-mm-dd'T'HH:MM:ss",
isoUtcDateTime:"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"
};
//Internationalizationstrings
dateFormat.i18n={
dayNames:[
"Sun","Mon","Tue","Wed","Thu","Fri","Sat",
"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"
],
monthNames:[
"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",
"January","February","March","April","May","June","July","August","September","October","November","December"
]
};
//Forconvenience...
Date.prototype.format=function(mask,utc){
returndateFormat(this,mask,utc);
};
第二步,将时间转换为毫秒进行加减计算,然后再用上面的js的转为指定的日期
varnowDate=newDate();
//加法操作
varysDate=newDate(nowDate.getTime()-30*24*60*60*1000).format('yyyy-mm-dd');
//减法操作
varyeDate=newDate(nowDate.getTime()-24*60*60*1000).format('yyyy-m-d');
通过以上两步就实现了,JS中日期的加减法,怎么样简单吧!快去试试!
以上所述就是本文的全部内容了,希望大家能够喜欢。