除了在创建Date对象时,通过参数获取到对应时间的Date对象 ,也可以设置Date对象的时间 。
date.setFullYear():设置年 ,setFullYear()可以传3个参数 ,其中第2个和第3个是可选的 ,分别是要设置的年 ,月,日;
date.setFullYear():设置月 ,预期值是 0~11 ,-1 将设置为上一年的最后一个月 、12 将设置为明年的第一个月 。setMonth()可以传2个参数,其中第2个是可选的 ,分别是要设置的月 ,日;
date.setDate():设置日,预期值是 1~31;0 会设置为上个月的最后一天、-1 将设置为上个月的最后一天的前一天 、如果一个月有 31 天:32 将导致下个月的第一天;
date.setHours():设置小时(0~23) ,setHours()可以传4个参数 ,其中第2 、3 、4个是可选的 ,分别是要设置的时 ,分 ,秒 ,毫秒;
date.setMinutes():设置分钟(0~59) ,setMinutes()可以传3个参数 ,其中第2个和第3个是可选的 ,分别是要设置的分 ,秒,毫秒
date.setSeconds():设置秒(0~59) ,setSeconds()可以传2个参数 ,其中第2个是可选的,分别是要设置的秒 ,毫秒
date.setMilliseconds():设置毫秒(0~59)
使用设置日期方法 ,可以实现一些获取指定日期时间的功能。
如果要获取2020年的当前时间 ,就可以使用 setFullYear() 方法轻松实现 ,如下所示:
const date = new Date();
date.setFullYear(2020)
console.log(date.toLocaleString());
又如获取今年二月的最后一天(即当月的天数):
const date = new Date();
date.setMonth(2,0);
console.log(date.getDate());
再或者获取昨天和明天的日期:
const date = new Date();
date.setDate(date.getDate() + 1);
console.log(明天是,date.toLocaleString());
date.setDate(date.getDate() - 2);
console.log(昨天是,date.toLocaleString());
在实际工作中 ,会经常需要获取到特定的日期 。可以封装一个函数 ,用于获取当前日期的前n天或后n天
function getSpecificDate(day){
//计算出要加/减的毫秒数
var num = 1000*60*60*24*day;
var newDate = new Date(Date.now()+num);
return newDate;
}
console.log(明天是,getSpecificDate(1).toLocaleString());
console.log(后天是,getSpecificDate(2).toLocaleString());
console.log(昨天是,getSpecificDate(-1).toLocaleString());
还有一种很方便的 ,给Date的原型方法中加入format方法 ,这样在Date对象上可以直接使用format方法格式化所需要的日期 。如下所示:
Date.prototype.format = function(format){
var o = {
"M+" : this.getMonth()+1, //month
"d+" : this.getDate(), //day
"h+" : this.getHours(), //hour
"m+" : this.getMinutes(), //minute
"s+" : this.getSeconds(), //second
"q+" : Math.floor((this.getMonth()+3)/3), //quarter
"S" : this.getMilliseconds() //millisecond
};
if(/(y+)/.test(format)){
format = format.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
}
for(var k in o) {
if(new RegExp("("+ k +")").test(format)){
format = format.replace(RegExp.$1, RegExp.$1.length==1 ? o[k] : ("00"+ o[k]).substr((""+ o[k]).length));
}
}
return format;
};
console.log(new Date().format(yyyy-MM-dd hh:mm:ss))
注: 在国内一般的项目都只需要获取本地时间就足够了,如果涉及到国外的项目,就可能需要获取世界标准时间。获取世界标准时间的方法就是在获取本地时间的方法中加上UTC,如 getUTCDate