JavaScript时间工具类
/** * JavaScript日期工具类 * @author ZhangLp */ /** * 获取当前月的第一天 */ function getCurrentMonthFirst(){ var date=new Date(); date.setDate(1); return date; } /** * 获取当前月的最后一天 */ function getCurrentMonthLast(){ var date=new Date(); var currentMonth=date.getMonth(); var nextMonth=++currentMonth; var nextMonthFirstDay=new Date(date.getFullYear(),nextMonth,1); var oneDay=1000*60*60*24; return new Date(nextMonthFirstDay-oneDay); } /** * 获取上个月的第一天 */ function lastMonthFirst(){ return new Date(getCurrentMonthFirst().setMonth(getCurrentMonthFirst().getMonth()-1)); } /** * 获取上个月最后一天 * @return */ function lastMonthLast(){ return new Date(getCurrentMonthFirst().setDate(getCurrentMonthFirst().getDate()-1)); } /** * 获取上上个月的第一天 */ function lastLastMonthFirst(){ return new Date(lastMonthFirst().setMonth(lastMonthFirst().getMonth()-1)); } /** * 获取上上个月最后一天 * @return */ function lastLastMonthLast(){ return new Date(lastMonthFirst().setDate(lastMonthFirst().getDate()-1)); } /** * 上N个月的第一天(N为变量) * 获取当前月之前倒退到第n个月的第一天(例如现在是10月12号,n=2,beforeNMonthFirst(2)意思是获取上上个月的第一天) */ function beforeNMonthFirst(N){ var forCurrMonthFirst = getCurrentMonthFirst(); for(var i=0;i<N;i++){ forCurrMonthFirst=new Date(forCurrMonthFirst.setMonth(forCurrMonthFirst.getMonth()-1)); } return forCurrMonthFirst; } /** * 上N个月的最后一天(N为变量) * 获取当前月之前倒退到第n个月的最后一天(例如现在是10月12号,n=2,beforeNMonthFirst(2)意思是获取上上个月的最后一天) * @return */ function beforeNMonthLast(N){ //获取n-1个月前的第一天 var M = parseInt(N - 1); var forCurrMonthFirst = getCurrentMonthFirst(); for(var i=0;i<M;i++){ forCurrMonthFirst=new Date(forCurrMonthFirst.setMonth(forCurrMonthFirst.getMonth()-1)); } return new Date(forCurrMonthFirst.setDate(forCurrMonthFirst.getDate()-1));; } /** * @description 对Date的扩展,将 Date 转化为指定格式的String * 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符, * 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字) * 例子: * (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423 * (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18 * @param fmt * @return */ Date.prototype.Format = function(fmt) { //author: meizz var o = { "M+" : this.getMonth() + 1, //月份 "d+" : this.getDate(), //日 "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 ( var k in o) if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); return fmt; } /** * 获取前X天或者后X天 * @param AddDayCount * @demo 今天:GetDateStr(0) 明天:GetDateStr(1) 昨天:GetDateStr(-1) 其它的以此类推 */ function GetDateStr(AddDayCount) { var dd = new Date(); dd.setDate(dd.getDate()+AddDayCount);//获取AddDayCount天后的日期 var y = dd.getFullYear(); var m = dd.getMonth()+1;//获取当前月份的日期 var d = dd.getDate(); return y+"-"+m+"-"+d; }
//计算月份差
function getMonthNumber(date1,date2){
//默认格式为"20030303",根据自己需要改格式和方法
var year1 = date1.substr(0,4);
var year2 = date2.substr(0,4);
var month1 = date1.substr(4,2);
var month2 = date2.substr(4,2);
var len=(year2-year1)*12+(month2-month1);
return len;
}
var len=getMonthNumber('200403','200504');
//alert('2003-03-03'.replace(/-/g, "/"));
//alert('2003-03-03'.replace(/-/g, ""));
if(len<0){
alert("查询起始月份不能比查询终止月份大.");
}else if(len >11){
alert("查询月份时间段不能超过12个月.");
}
//计算天数差
function getDayNumber(date1,date2){
//默认格式为"20030303",根据自己需要改格式和方法
var year1 = date1.substr(0,4);
var year2 = date2.substr(0,4);
var month1 = date1.substr(4,2);
var month2 = date2.substr(4,2);
var day1 = date1.substr(6,2);
var day2 = date2.substr(6,2);
temp1 = year1+"/"+month1+"/"+day1;
temp2 = year2+"/"+month2+"/"+day2;
var dateaa= new Date(temp1);
var datebb = new Date(temp2);
var date = datebb.getTime() - dateaa.getTime();
var time = Math.floor(date / (1000 * 60 * 60 * 24));
alert(time);
}
getDayNumber('20030303','20040503');
//。。。持续补充更新中。。。