原标题:Javascript中神奇的 Date对象
日常生活中,各种形式的时间字符到处都是。时间观念的产生,时间单位、计时工具的发明,给人类带来的变化实在一言难尽。今天就来谈谈日期那些事儿。一起来看看 Javascript 中的日期对象 Date。
获取月份天数
// 获取月份天数function getMonthDayCount(year, month) { return new Date(year, month, 0).getDate();}console.log(getMonthDayCount(2017, 10)); // 31
Date 第三个参数的本质跟 setDate 是一样的。
因为 date 为 0 时自动退到上个月的最后一天,所以这里月份也不需要减,正好的。
获取所有月份天数
function getAllMonthDayCount(year) { var days = [31, new Date(year, 2, 0).getDate(), 31, 30, 31, 30, 31,文章来源地址28820.html 31, 30, 31, 30, 31]; return days;}console.log(getAllMonthDayCount(2016));// [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
这个算是上面的延伸,不多解释。
是否是闰年
function isLeapYear(year) { return (year % 4 == 0) && (year % 100 != 0 || year % 400 == 0);}
这是网上的web前端开发里相关代码,相信大多数人都用。但其实你真的理解或者能记住么?光是html和css就足够多记的了
function isLeapYear(year) { return new Date(year, 2, 0).getDate() === 29;}console.log([ isLeapYear(2000), isLeapYear(2016), isLeapYear(2017), isLeapYear(2018)]); // [ true, true, false, false ]
这样看,是不是就非常简单容易理解了。
而且都不需要记,是不是想忘都忘不了?
天数加减操作
之前看到有人用相对秒数在计算几天前或几天后,甚至还在算跨月,跨年的情况。
其实直接 setDate 就好了,自动处理 跨月,跨年 的情况。
// 10天后是几月几号var dt = new Date('2016-12-25');dt.setDate(dt.getDate() + 10);console.lo文章来源地址28820.htmlg(dt.toLocaleDateString()); // 2017/1/4 // 10天前是几月www.yii666.com几号var dt = new Date('2017-01-04');dt.setDate(dt.getDate() - 10);console.log(dt.toLocaleDateString()); // 2016/12/25
下面我将Javascript Date 对象的对象和方法总结成一个表,让大家参考,也可以关注Javascript参考手册。
来源于:Javascript中神奇的 Date对象