JavaScript --Date方法和API

1.Date方法

1、作用:封装一个日期,提供对日期执行操作的API
2、何时使用: 今后只要保存或操作日期都用Date对象
3、如何使用:4种方式
1. 获得客户端当前系统时间: 
            var now=new Date();
        2. 创建日期对象保存自定义时间:
           var date=new Date("yyyy/MM/dd hh:mm:ss");
                         var=date=new Date(yyyy,MM-1,dd,hh,mm,ss);
        3. 复制一个日期:
            为什么: 日期的计算都直接修改原日期对象,旧时间无法保存
            何时: 如果需要同时保存计算前后的两个时间时,就必须将原日期复制一个副本再计算
            如何: var date2=new Date(date1);

ex:
var date1=new Date();  //假设当前时间为"2016/10/10";
var date2=new Date(date1); //复制date1的值给date2,date1不变
date2.getDate()+10;//在date2中获取当前天数,然后加10天,date2变成了"2016/10/20" date1不变
console.log(date1); //2016/10/10
console.log(date2); //2016/10/20


       4. 直接用毫秒数创建日期对象:
           var date=new Date(ms);

拓展:Date对象中保存的是1970年1月1日0点至今的毫秒数



1.Date的API

单位: 年FullYear
  月Month    
  日Date        
  星期Day
             
  时Hours    
  分Minutes  
  秒Seconds  
  毫秒MilliSeconds

1.每个单位都有一对儿getXXX/setXXX方法
getXXX()方法负责读取指定分量的值:
            比如: date.getDate(); //获得几号
          setXXX(n) 方法负责修改指定分量的值: 
            比如: date.setDate(10); //修改date的日期为10号
          特例: Day没有set方法,因为星期只读,不可改
       2. 取值范围: 
          只有月中的日(Date)从1开始到31结束
          其余单位都是从0开始,到进制-1结束
          Month  0~11  比现实中都小1  需要修正
          Date     1~31
          Day       0~6    星期日是0,不需要修正
          Hours   0~23  不用修正
          Minutes,Seconds 0~59  不用修正 


 
    3.的日期计算: 
       1. 两日期相减: 获得毫秒差
       2. 对任意单位做加减: 3步:
           1. 取分量: var n=date.getXXX();
           2. 做加减: n+=?;
           3. 放回去; date.setXXX(n);
                              特点: 1. 自动调整进制
                                       2. 直接修改原日期对象
           简化版: date.setXXX(date.getXXX()+n)
   

ex:
<span style="white-space:pre">		</span>var date=new Date();//获取当前shi'jia
		var end=new Date(date);//复制后的值
		end.setDate(end.getDate()+59);//简写方式
		document.write("可以买"+date+"--"+end+"的火车票<br>");

      4.转字符串: 
        .toString() -> 转为中国标准时间(+8区)
        .toLocaleString() -> 转为系统当前时间格式
        .toLocaleDateString -> 转为系统当前时间格式
            仅包含日期部分
        .toLocaleTimeString -> 转为系统当前时间格式
            仅包含时间部分
        .toGMTString() -> 转为国际标准时间(0时区)     

ex:
<span style="white-space:pre">		</span>var date=new Date(0);//获取从1970年1月1日开始的时间
		document.write(date.toString()+"<br>");//转为中国标准时间
		document.write(date.toGMTString()+"<br>");//转为国际标准时间
		document.write(date.toLocaleString()+"<br>");//获取系统格式时间
		document.write(date.toLocaleDateString()+"<br>");//仅获取年月日
		document.write(date.toLocaleTimeString()+"<br>");//仅获取时间


3.Date示例代码

<span style="white-space:pre">	</span><script>
		 
			//1.<span style="color:#ff0000;">Date--合同到期</span>
				//定义入职时间hiredate: 2012/6/30
			var hiredate=new Date("2012/6/30");
				//复制入职时间为到期时间enddate
			var enddate=new Date(hiredate);
				//将enddate+3年
			enddate.setFullYear(enddate.getFullYear()+3);
			//复制到期时间为续签时间renewdate
				var renewdate=new Date(enddate);
				//将renewdate-1月
			renewdate.setMonth(renewdate.getMonth()-1);
				//如果renewdate是周六:
			if(renewdate.getDay()==6){
				//renewdate-1天
				renewdate.setDate(renewdate.getDate()-1);
			}else if(renewdate.getDay()==0){
			//否则,如果renewdate是周日:
				//renewdate-2天
				renewdate.setDate(renewdate.getDate()-2);
			}
				//复制续签时间为提醒时间alertdate
			var alertdate=new Date(renewdate);
				//将alertdate-7天
			alertdate.setDate(alertdate.getDate()-7);
			console.log("到期时间"+enddate);
			console.log("续签时间"+renewdate);
			console.log("提醒时间"+alertdate);
		
		
			
<span style="color:#ff0000;"><span style="white-space:pre">			</span>//2.Date--计算10个工作日之后的日期</span>
			var now=new Date();
			var days=10;//10个工作日之后
			//i从0开始,到<days结束
			for(var i=0;i<days;i++){
				//如果now是周五
					//now+3天
				//否则,如果now是周六
					//now+2天
				//否则
					//now+1天
				var day=now.getDay();//获得now的星期
				now.setDate(
					now.getDate()+(day==5?3:day==6?2:1)
				);
			}
			console.log(now);
		
			
			
<span style="white-space:pre">			</span><span style="color:#ff0000;">//3.Date--定义数组week,获取当前时间</span>
			function format(date){
				//定义数组week: 包含日,一,二,....,六
				var week=
					["日","一","二","三","四","五","六"];
				//获得date中的年保存在y中
				var y=date.getFullYear();
				//获得date中的月+1后保存在M中
				var M=date.getMonth()+1;
				M<10&&(M="0"+M);//如果M<10,改为0+M
				//获得date中的日保存在d中
				var d=date.getDate();
				d<10&&(d="0"+d);//如果d<10,改为0+d
				//获得date中的星期保存在day中
				var day=date.getDay();
				//获取week中day位置的汉字保存回day中
				day=week[day];
				//获得date中的小时保存在h中
				var h=date.getHours();
				//声明变量am,如果h<12,am就赋值为上午,否则赋值为下午
				var am=h<12?"上午":"下午";
				h>12&&(h-=12);//如果h>12,就h-12
				h<10&&(h="0"+h);//如果h<10,就改为0+h
				//获得date中的分钟保存在m中
				var m=date.getMinutes();
				m<10&&(m="0"+m);//如果m<10,就改为0+m
				return y+"年"+M+"月"+d+"日 星期"+day
							+" "+am+h+":"+m;
			}//2016年10月10日 星期一 上午11:28
			console.log(format(new Date()));
		</script>







  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值