固定日期的定义
var date1 = new Date(); //注意月份为6 为7月 var date2 = new Date(2013,6,14); var date3 = new Date(2013,11,14,0,0,0); var endTime = new Date(Date.parse('2013-12-20'.replace(/-/g,"/")));
//返回日期 相差天数
var getDatePeriod = function(start,finish){ //return Math.abs(start*1-finish*1)/60/60/1000/24; //返回带有小数的天数 return Math.floor(Math.abs(start*1-finish*1)/60/60/1000/24);//返回天数 只有整数 }
//返回当前日期的第一天
var getFirstDateInMonth= function(date){
return new Date(date.getFullYear(),date.getMonth(),1);
}
//返回当前月的最后一天 , 天=0 为最后一天
var getLastDateInMonth= function(date){ return new Date(date.getFullYear(),date.getMonth()+1,0); }
//取出 出它所在季度的第一天
var getFirstDateInQuarter= function(date){ return new Date(date.getFullYear(),~~(date.getMonth()/3)*3,1); }
//求出它所在季度的最后一天
var getLastDateInQuarter= function(date){ return new Date(date.getFullYear(),~~(date.getMonth()/3)*3+3,0); }
//判断闰年 平年的二月是28天,闰年的二月是29天。 二月29号就是闰年
Date.prototype.isLeapYear = function() { return new Date(this.getFullYear(),2,0).getDate() == 29; }
// 某个月有多少天
function daysInMonth ( year, month ) { var num = new Date(); num.setFullYear( year, (month ==12) ? 0 : month , 0 ); return num.getDate(); }
// 2009/2/23(或者2009/02/23)合法
var test = function(str){ alert(str ); var arr = str.split("/"); var m = Number(arr[1])-1; var d = new Date(Number(arr[0]),m,Number(arr[2]) ); alert(d ); if(isNaN(d)) { // alert("判断非数字1"); return false; } if(isNaN(d.getDate())){ // alert("判断非数字1"); return false; } return d.getMonth() === m; }
/********根据一个日期求得星期,如'2009-6-21' return 0(星期日)***********/ var get_day = function (strDate){ var f = strDate.replace(/-/g,'/'); f = new Date(f).getDay(); return "星期"+"天一二三四五六".split('')[f] } writeData(get_day('2013-8-21') ) var now = new Date() var currentMonth = now.getMonth() +1 //获得当前的月份 var nextMonth = now.getMonth()+2 //获得下一个月的月份 writeData("当前月份:"+currentMonth+" nextMonth: "+nextMonth ); //用javascript取得某一年的第一个星期一的日期 function get(year) { var d = new Date(year, 1, 1); var day = d.getDay(); //获取1月1号是星期几 d.setDate((8 - day) % 7 + 1); return d; } writeData("<br>某一年的第一个星期一日期 :"+get(2013)); //求前 n 天或者后 n 天的日期(用xxxx-xx-xx表示) var showdate = function(n){ var d = new Date(); d.setDate(d.getDate()+n); //或者 d = d.getFullYear() + "-" + (d.getMonth()+1) + "-" + d.getDate(); //d = d.toLocaleDateString(); 中文格式的 d = d.toLocaleDateString().replace(/[\u4e00-\u9fa5]/g,'-').replace(/-$/,'') return d; } writeData("<br>"+"今天是:"+showdate(0)); writeData("<br>"+"昨天是:"+showdate(-1) ); writeData("<br>"+"明天是:"+showdate(1)); writeData("<br>"+"10天前是:"+showdate(-10) ); writeData("<br>"+"8天后是:"+showdate(8)); //将2005-8-5转换成2005-08-05格式 var strDate = '2005-8-5'; writeData("<br>"+ strDate.replace(/\b(\w)\b/g, '0$1') ); // 对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 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)); //writeData("<br>========="+ RegExp.$1 +this.getFullYear()+" "+fmt); //替换月份,把月份替换成真正的数字显示 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; } var date = new Date(); writeData("<br>"+ date.Format('yyyy-MM-dd') );
测试
writeData(date1 +" <br>" + date2);
writeData(" 时间差 ="+getDatePeriod( date1 , date2 ) +" <br> 第一天 = " + getFirstDateInMonth(date1 )+ " <br> ");
writeData("这个月的最后一天 ="+getLastDateInMonth( date1 )+" " );
writeData("出它所在季度的第一天 = "+getFirstDateInQuarter( date1 )+" " );
writeData("出它所在季度的最后一天 = "+getLastDateInQuarter( date1 )+" " );
writeData("日期 = "+date3 +" " );
writeData("日期 = "+daysInMonth(2013,0) +" " );
writeData("日期 = "+test("2009/1/33") +" " );