众所周知,JavaScript核心包含Data()构造函数,用来创建表示时间和日期的对象。
今天主要跟大家梳理一下,常用的时间、日期处理方法,方便大家使用和理解
格式化时间
老生常谈,大概会这么写
1 2 3 4 5 6 7 8 9 10 11
|
var format = function (time) { var y = time.getFullYear(); //getFullYear方法以四位数字返回年份 var M = time.getMonth() + 1; // getMonth方法从 Date 对象返回月份 (0 ~ 11),返回结果需要手动加一 var d = time.getDate(); // getDate方法从 Date 对象返回一个月中的某一天 (1 ~ 31) var h = time.getHours(); // getHours方法返回 Date 对象的小时 (0 ~ 23) var m = time.getMinutes(); // getMinutes方法返回 Date 对象的分钟 (0 ~ 59) var s = time.getSeconds(); // getSeconds方法返回 Date 对象的秒数 (0 ~ 59) return y + '-' + M + '-' + d + ' ' + h + ':' + m + ':' + s; }
var time1 = format(new Date());
|
但是有什么问题呢?一般来说小于10的值,要在前面添加字符串‘0’的,我们大可以写个判断来解决他,但是太麻烦了~
其实可以这样
1 2 3 4 5 6 7 8
|
var format = function (time) { var date = new Date(+time + 8 * 3600 * 1000); return date.toJSON().substr(0, 19).replace('T', ' ').replace(/-/g, '.'); } var time1 = format(new Date());
//Date的‘toJSON’方法返回格林威治时间的JSON格式字符串,转化为北京时间需要额外增加8个时区,然后把‘T’替换为空格,即是我们需要的时间格式,后面可以通过正则将日期分隔符换成任何想要的字符。 //一元加操作符可以把任何数据类型转换成数字,所以获取时间对象对应毫秒数的另一个方法是+Date或Number(Date)
|
获取当月最后一天
一个月可能有28/29/30/31天,使用写死数据的方式来解决闰年和大小月显然是不科学的。
1 2 3 4 5 6 7 8
|
function getLastDayOfMonth (time) { var month = time.getMonth(); time.setMonth(month+1); time.setDate(0); return time.getDate() } getLastDayOfMonth(new Date()) //先月份加一,再取上个月的最后一天
|
获取这个季度第一天
用来确定当前季度的开始时间,常用在报表中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
function getFirstDayOfSeason (time) { var month = time.getMonth(); if(month <3 ){ time.setMonth(0); }else if(2 < month && month < 6){ time.setMonth(3); }else if(5 < month && month < 9){ time.setMonth(6); }else if(8 < month && month < 11){ date.setMonth(9); } time.setDate(1); return time; } getFirstDayOfSeason(new Date()) //先月份加一,再取上个月的最后一天
|
获取中文星期
这也是个比较常见的雪球,完全没必要写一长串switch啦,直接用charAt来解决。
1
|
let time ="日一二三四五六".charAt(new Date().getDay());
|
获取今天是当年的第几天
来看看今年自己已经浪费了多少时光~
1 2 3 4
|
var time1 = Math.ceil(( new Date() - new Date(new Date().getFullYear().toString()))/(24*60*60*1000));
//需要注意的是new Date()不设置具体时间的话new Date(2019)得到的不是0点而是8点 //Tue Jan 01 2019 08:00:00 GMT+0800 (中国标准时间)
|
获取今天是当年的第几周
日历、表单常用
1 2 3
|
var week = Math.ceil(((new Date() - new Date(new Date().getFullYear().toString()))/(24*60*60*1000))/7);
//在获取第几天的基础上除7,向上取整
|
获取今天是当年还剩多少天
再来看看今年还有多少天可以浪费~