Date对象用于对时期和时间进行存储和计算
getTime():返回Date对象与UTC时间1970年1月1日午夜之间相差的毫秒数。用法:经常用于不修改原时间,用来复制
setTime():以毫秒值设置Date对象
1.每个分量都有一对儿get/set方法
*星期没有set方法! getDay()获得星期,没有setDay
2.命名:年月日不加s,时分秒加s
get/setFullYear();get/setMonth();get/setDate();
get/setHours();get/setMinutes();get/setSeconds();
3.返回值:
月中的日取值范围从1-31结束
星期:日 一 二 三 四 五 六
下标:0 1 2 3 4 5 6
月份:1月 2月 11月 12月
0 1 10 11
用于计算时:要减一修正
创建Date对象:4种:
1. var now=new Date(); //创建一个新日期对象同时,保存了*客户端*当前时间点的毫秒数。——获得当前时间
自定义时间对象:
2. var time=new Date("xxxx/xx/xx [xx:xx:xx]")
3. var time=new Date(年,月-1,日[,时,分,秒)
date.getTime(): 获得日期对象中的毫秒数
日期转字符串输出:
1. date.toLocaleString(); 转为完整日期字符串
2. date.toLocaleDateString(); 仅转为日期部分
3. date.toLocaleTimeString(); 仅转为时间部分
示例代码:
<!DOCTYPE html>
<html>
<head>
<title> date对象 </title>
<meta charset="utf-8" />
<script>
var hiredate=new Date("2012/6/30");
var enddate=new Date(hiredate.getTime());
enddate.setFullYear(enddate.getFullYear()+3);
console.log(enddate.toLocaleDateString());
//计算续签时间:renewal
// 复制enddate到renewal
var renewal=new Date(enddate.getTime());
// 将renewal的月份-1
renewal.setMonth(renewal.getMonth()-1);
// 如果renewal是星期6
if(renewal.getDay()==6){
// 则renewal减1天
renewal.setDate(renewal.getDate()-1);
}else if(renewal.getDay()==0){
// 否则,如果renewal是星期日
// 则renewal减2天
renewal.setDate(renewal.getDate()-2);
}
console.log(renewal.toLocaleDateString());
//计算提醒时间:remind
// 复制renewal到remind
var remind=new Date(renewal.getTime());
// 将remind减7天
remind.setDate(remind.getDate()-7);
console.log(remind.toLocaleDateString());
function getDueDate(days){
//Step1: 获得当前时间: now
var now=new Date();
//循环: 反复为当前时间+1天,到i<days结束
for(var i=0;i<days;i++){
// 如果当前时间是周五
if(now.getDay()==5){
// 就先加2天
now.setDate(now.getDate()+2);
}else if(now.getDay()==6){
// 否则,如果当前时间是周六
// 就先加1天
now.setDate(now.getDate()+1);
}
// 默认都要加1天!
now.setDate(now.getDate()+1);
}
return now;
}
//xxxx年xx月xx日 星期几 上午/下午 xx:xx
function format(date){
var arr=[/*2015,10,17,六,上午,10,14*/];
//获得date中的年份追加到arr中
arr.push(date.getFullYear());
//获得date中的月份M,先+1修正
var M=date.getMonth()+1;
//如果M<10,则M修改为"0"+M
//将M追加到arr中
arr.push(M<10?"0"+M:M);
//获得date中的日期d
var d=date.getDate();
//如果d<10,则d修改为"0"+d
//将d追加到arr中
arr.push(d<10?"0"+d:d);
//获得data中的星期w,(0 1 2....6)
var week=["日",'一','二','三','四','五','六'];
//获得week中w位置的字,追加到arr中
arr.push(week[date.getDay()]);
//获得data中的小时h,
var h=date.getHours();
//如果h<12,则arr中追加"上午",否则追加"下午"
arr.push(h<12?"上午":"下午");
//如果h>12,则h修改为h-12
h>12&&(h-=12);
//如果h<10,则h修改为"0"+h,将h加入arr中
arr.push(h<10?"0"+h:h);
//获得date中的分钟m, 如果m<10,m改为"0"+m
var m=date.getMinutes();
//将m加入arr中
arr.push(m<10?"0"+m:m);
var str=arr.join("");
//获得date中的秒钟s, 如果s<10,s改为"0"+s
var s=date.getSeconds();
//将m加入arr中
arr.push(s<10?"0"+s:s);
var str=arr.join("");
//"20151017六上午101426"
var reg=/(\d{4})(\d{2})(\d{2})([一二三四五六日])([上下]午)(\d{2})(\d{2})(\d{2})/;
console.log(str);
console.log(reg.exec(str));
return str.replace(reg,"$1年$2月$3日 星期$4 $5 $6:$7:$8");
}
</script>
</head>
<body>
<button onclick="alert(format(new Date()))">格式化输出日期</button>
<button onclick="alert(getDueDate(prompt('输入天数')).toLocaleDateString())">n个工作日后的日期</button>
</body>
</html>