在前端页面中一般时间的要求格式是与时间对象的显示格式有区别的,默认页面中 new Date() 的显示为Mon Jan 04 2021 14:25:04 GMT+0800 (中国标准时间)
,这显然并不符合我们中文时间的阅读方式,我们一般习惯于 2020-01-04 14;25:04
这样的阅读方式,总结了几种格式化时间对象的方式.
var date = new Date();
var str = date.getFullYear()+'-'+(date.getMonth()+1)+'-'+date.getDate()+' '+date.getHours()+':'+date.getMinutes()+':'+date.getSeconds();
注意 date对象的月份是从0开始的,所以我们所说的月份要将date对象的月份+1。
//此时的str就是拼接好的时间对象的字符串,但是此时得到的是021-1-4 14;25:4
,这样的还需要进行不足两位进行补零处理,用到了字符串的padLeft方法,传两个参数,第一个是要得到的位数,第二个参数是位数不足要补位的字符.
进行补足位数处理的data对象格式化最终的字符串拼接为
var date = new Date();
var str = date.getFullYear()+'-'+(date.getMonth()+1).toString().padLeft(2,'0')+'-'+date.getDate().toString().padLeft(2,'0')+' '+date.getHours().toString().padLeft(2,'0')+':'+date.getMinutes().toString().padLeft(2,'0')+':'+date.getSeconds().toString().padLeft(2,'0');
js的date对象也自己提供了一些格式化的方法,但是和我们习惯的可能稍微有些不同,所以可以只取符合格式的部分进行拼接。
var date = new Date();
var str = date.toJSON().substr(0,10)+' '+date.toTimeString().substr(0,8);
其实最基础的办法就是通过判读是否是 1,3,5,7,8,10,12月,是的话返回31,是2月的话再判断是不是闰年,是的话返回29,不是返回29,其他返回30。
function getDays(year,month){
var arr = [1,3,5,7,8,10,12]
if(month==2){
var days = 28;
if((year%4==0) && (year%100!=0 || year%400==0)){
days = 29;
}
return days;
}
else if(arr.includes(month)){
return 31;
}else{
return 30;
}
}
//输入参数年份和 月份来判断当月天数,注意本方法是判断的月份值,取值1-12,并不是date对象的getMonth()值。
var date = new Date();
var days = getDays(date.getFullYear(),date.getMonth()+1 );//获取本月的天数
利用date对象的构造方法在设置天数为0时,调用getDate()方法会返回上月的最后一天,这样的话要获取本月天数,只需要构造下月的date对象并将天数设置为0就可以了。
var date = new Date();
var days = new Date(date.getFullYear(),date.getMonth()+1,0).getDate();//获取本月的天数
//注意此时的构造date对象的month值为0-11,传入getMonth()+1,其实就是传入下月的month值。