同福

JavaScript里日期和时间的使用

介绍

介绍

JavaScript 内建日期时间对象 Date,可以用来处理日期时间。

可以获取时间,可以设置时间,可以进行时间转换。

使用

特点

创建日期对象

var dateObj = new Date();

获取年

年数字和获取到的一致,不做调整

var yearNum = dateObj.getFullYear();

获取月

月份数字是从 0 开始计算的,十二个月对应 0~11 这12个数字

也就是说 0 是一月,11 是十二月,所以这里我们要 +1

var monthNum = dateObj.getMonth()+1;

获取日

日数字和获取到的一致,不做调整

var dayNum = dateObj.getDate();

获取星期

星期数字是 1~6 对应一周的礼拜一到礼拜六,数字 0 对应礼拜天

var weekNum = dateObj.getDay();
if(weekNum == 0){
    weekNum = 7;
}

获取月份天数

我们通过设置日子为 0 来获取当月的天数

但是比较坑爹的地方是 0 月本来应该是得到 1 月的天数,但实际得到的是 12 月的天数,而 1~11 月得到天数就是 1~11 月的天数

所以,尼玛老子头都大了~~

var maxDaysMonth = dateObj.getMonth()+1;
if(maxDaysMonth == 12){
    maxDaysMonth = 0;
}
var maxDaysInMonth = new Date(yearNum, maxDaysMonth, 0).getDate();

总结

我们得到的时间数字和我们习惯的数字不一样,所以我们进行了本地化的转换

但是记得一点,就是传入到 Date 对象里的参数的数字还是要按人家的逻辑才行

并且创建 Date 对象时候需要为每个参数提供一个值,否则该参数就默认为 0 值

var myDate = new Date(2020, 1, 11, 12, 23, 59);

如果要实现对某一个时间进行向前或者向后偏移的功能,可以使用如下方法

当前时间向前偏移 1 天

var nowDate = new Date();
nowDate.setDate(nowDate.getDate()+1);

当前时间向前偏移 8 个小时

var nowDate = new Date();
nowDate.setHours(nowDate.getHours()+8);