日常生活中,各种形式的时间字符到处都是。时间观念的产生,时间单位、计时工具的发明,给人类带来的变化实在一言难尽。今天就来谈谈日期那些事儿。一起来看看 JavaScript 中的日
日常生活中,各种形式的时间字符到处都是。时间观念的产生,时间单位、计时工具的发明,给人类带来的变化实在一言难尽。今天就来谈谈日期那些事儿。一起来看看 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, 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.log(dt.toLocaleDateString()); // 2017/1/4
// 10天前是几月几号
var dt = new Date('2017-01-04');
dt.setDate(dt.getDate() - 10);
console.log(dt.toLocaleDateString()); // 2016/12/25
下面我将JavaScript Date 对象的对象和方法总结成一个表,让大家参考,也可以关注javascript参考手册。
Date 对象属性
属性 |
描述 |
constructor |
返回对创建此对象的 Date 函数的引用。 |
prototype |
使您有能力向对象添加属性和方法。 |
Date 对象方法
方法 |
描述 |
Date() |
返回当日的日期和时间。 |
getDate() |
从 Date 对象返回一个月中的某一天 (1 ~ 31)。 |
getDay() |
从 Date 对象返回一周中的某一天 (0 ~ 6)。 |
getMonth() |
从 Date 对象返回月份 (0 ~ 11)。 |
getFullYear() |
从 Date 对象以四位数字返回年份。 |
getYear() |
请使用 getFullYear() 方法代替。 |
getHours() |
返回 Date 对象的小时 (0 ~ 23)。 |
getMinutes() |
返回 Date 对象的分钟 (0 ~ 59)。 |
getSeconds() |
返回 Date 对象的秒数 (0 ~ 59)。 |
etMilliseconds() |
返回 Date 对象的毫秒(0 ~ 999)。 |
getTime() |
返回 1970 年 1 月 1 日至今的毫秒数。 |
getTimezoneOffset() |
返回本地时间与格林威治标准时间 (GMT) 的分钟差。 |
getUTCDate() |
根据世界时从 Date 对象返回月中的一天 (1 ~ 31)。 |
getUTCDay() |
根据世界时从 Date 对象返回周中的一天 (0 ~ 6)。 |
getUTCMonth() |
根据世界时从 Date 对象返回月份 (0 ~ 11)。 |
getUTCFullYear() |
根据世界时从 Date 对象返回四位数的年份。 |
getUTCHours() |
根据世界时返回 Date 对象的小时 (0 ~ 23)。 |
getUTCMinutes() |
根据世界时返回 Date 对象的分钟 (0 ~ 59)。 |
getUTCSeconds() |
根据世界时返回 Date 对象的秒钟 (0 ~ 59)。 |
getUTCMilliseconds() |
根据世界时返回 Date 对象的毫秒(0 ~ 999)。 |
parse() |
返回1970年1月1日午夜到指定日期(字符串)的毫秒数。 |
setDate() |
设置 Date 对象中月的某一天 (1 ~ 31)。 |
setMonth() |
设置 Date 对象中月份 (0 ~ 11)。 |
setFullYear() |
设置 Date 对象中的年份(四位数字)。 |
setYear() |
请使用 setFullYear() 方法代替。 |
setHours() |
设置 Date 对象中的小时 (0 ~ 23)。 |
setMinutes() |
设置 Date 对象中的分钟 (0 ~ 59)。 |
setSeconds() |
设置 Date 对象中的秒钟 (0 ~ 59)。 |
setMilliseconds() |
设置 Date 对象中的毫秒 (0 ~ 999)。 |
setTime() |
以毫秒设置 Date 对象。 |
setUTCDate() |
根据世界时设置 Date 对象中月份的一天 (1 ~ 31)。 |
setUTCMonth() |
根据世界时设置 Date 对象中的月份 (0 ~ 11)。 |
setUTCFullYear() |
根据世界时设置 Date 对象中的年份(四位数字)。 |
setUTCHours() |
根据世界时设置 Date 对象中的小时 (0 ~ 23)。 |
setUTCMinutes() |
根据世界时设置 Date 对象中的分钟 (0 ~ 59)。 |
setUTCSeconds() |
根据世界时设置 Date 对象中的秒钟 (0 ~ 59)。 |
setUTCMilliseconds() |
根据世界时设置 Date 对象中的毫秒 (0 ~ 999)。 |
toSource() |
返回该对象的源代码。 |
toString() |
把 Date 对象转换为字符串。 |
toTimeString() |
把 Date 对象的时间部分转换为字符串。 |
toDateString() |
把 Date 对象的日期部分转换为字符串。 |
toGMTString() |
请使用 toUTCString() 方法代替。 |
toUTCString() |
根据世界时,把 Date 对象转换为字符串。 |
toLocaleString() |
根据本地时间格式,把 Date 对象转换为字符串。 |
toLocaleTimeString() |
根据本地时间格式,把 Date 对象的时间部分转换为字符串。 |
toLocaleDateString() |
根据本地时间格式,把 Date 对象的日期部分转换为字符串。 |
UTC() |
根据世界时返回 1970 年 1 月 1 日 到指定日期的毫秒数。 |
valueOf() |
返回 Date 对象的原始值。 |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。