Date 学习

本文介绍了一系列使用JavaScript进行日期和时间处理的方法,包括日期格式化、日期间隔计算、获取特定日期等实用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

固定日期的定义

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")  +" "  );

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值