JS怎么获取当月最后一天

本文介绍了如何使用JavaScript Date对象创建实例,包括Date()构造函数的不同用法,如无参数、数值、字符串和7参数形式。重点讲解了如何快速获取指定日期的最后一天,以及在实际场景中的应用,如计算试用期结束日期和合同到期日。
摘要由CSDN通过智能技术生成

😎 生活,要有仪式感!

在这里插入图片描述


😂 我应该不是最后一个知道怎么获取当月最后一天吧!

这篇文章带你领略 Date 的魅力,秒懂获取最后一天,几天后,几个月后,几年后的方式,简单易懂!😄

如果你已经了解了 Date 的用法可以直接看这里 传送门: ⭐️重点在这里


Date 对象

一个 JavaScript Date 实例,呈现时间中的某个时刻。Date 对象则基于 Unix Time Stamp,即自1970年1月1日 08:00:00(UTC)起经过的毫秒数。

1970 开始,那是不是不能表示 1970 年之前的时刻啊?

怎么可能😂!之前的时刻也是可以表示的,只不过得到的时间戳是负数罢了~


创建 Date 实例

Date 实例只能通过 new 关键字创建,如果直接调用 Date() 则返回的是字符串 (String),而非对象哦:

let date = new Date() //return Date object
// Sat Oct 24 2020 20:15:20 GMT+0800 (中国标准时间)

let date1 = Date() // return String
// "Sat Oct 24 2020 20:15:20 GMT+0800 (中国标准时间)"

当然,new出来的Date实例就可以使用Date的方法,Date() 得到的字符串就是普通的字符串!

Date() 构造函数的四种基本形式

new Date();
new Date(value);
new Date(dateString);
new Date(year, monthIndex [, day [, hours [, minutes [, seconds [, milliseconds]]]]]);

不慌,一个个看:

1. 无参数

这个最简单,就是返回当前的时刻。

new Date()
//Sat Oct 24 2020 20:33:25 GMT+0800 (中国标准时间)

2. value

这里的 value 我的理解指的是日期值,可以是能被解析的时间戳、Date 实例

new Date(1603542929950) 
//Sat Oct 24 2020 20:35:29 GMT+0800 (中国标准时间)

new Date(new Date()) 
//Sat Oct 24 2020 20:35:46 GMT+0800 (中国标准时间)

3. dateString

🚫 不推荐使用:由于浏览器之间的差异与不一致性,强烈不推荐使用 Date 构造函数来解析日期字符串

这里的 dateString 指的就是任何可以被解析的字符串形式日期,形式也比较多。
注意 new Date('2020-10-31')new Date('2020-10-31 ') 在时间上的区别就可以了。

new Date('2020') //缺省月日,默认都是1
// Wed Jan 01 2020 08:00:00 GMT+0800 (中国标准时间)

new Date('2020-10-31') //缺省时间,(中国)默认是 08:00:00
//Sat Oct 31 2020 08:00:00 GMT+0800 (中国标准时间)

new Date('2020-10-31 ')//注意多了个空格;缺省时间,返回 00:00:00
//Sat Oct 31 2020 00:00:00 GMT+0800 (中国标准时间)

new Date('2020-10-31 00:00:00') //返回指定的时间;和上面的写法等效
//Sat Oct 31 2020 00:00:00 GMT+0800 (中国标准时间)

new Date('2020-10-31 12:12:12') //返回指定的时间
//Sat Oct 31 2020 12:12:12 GMT+0800 (中国标准时间)

4. 7个参数

👍 推荐使用,用了都说好!

最多可以接受 7 个参数:
year
表示年份的整数值。 0到99会被映射至1900年至1999年,其它值代表实际年份。

monthIndex
表示月份的整数值,从 0(1月)到 11(12月),注意从0开始就好了!

除了上面的年月参数,下面的参数都是可选的 (默认是0,日期是1):

date
表示一个月中的第几天的整数值,从1开始。默认值为1

hours
表示一天中的小时数的整数值 (24小时制)。默认值为0(午夜)

minutes
表示一个完整时间(如 01:10:00)中的分钟部分的整数值。默认值为0

seconds
表示一个完整时间(如 01:10:00)中的秒部分的整数值。默认值为0

milliseconds
表示一个完整时间的毫秒部分的整数值。默认值为0,用的不多。


说了老半天,终于来到正题了!

⭐️ 重点在这里

嘿嘿!不知道你有没有试过传入 超出的范围 的日期数据会怎样?
哈哈!是不是突然就 悟了!

最后一天方法很简单:本月最后一天 === 下个月第 0 天

new Date(2020, 0, 0)
//Tue Dec 31 2019 00:00:00 GMT+0800 (中国标准时间)

当然同理,80秒后,90分钟后,30小时后,60天后,10个月后,3年后都是可以直接加上去的,用起来是不是真就那么地丝滑😄~

简单的使用场景

1. 实习期/试用期

// 根据入职日期和试用期计算转正日期,要求:入职日期 + 试用期
let staff = {
	entryDate: '2020-09-10',//入职日期
	probation: '6个月' //试用期
}
let entryDate = new Date(staff.entryDate), // 获取入职日期
	probation = staff.probation.substring(0, staff.probation.length - 2) //截取月份数字

staff.regularDate = new Date(
	entryDate.getFullYear, 
	entryDate.getMonth + Number(probation),
	entryDate.getDate()) //转正日期,注意相加的时候要转成数字

2. 劳动合同

// 根据计算合同到期时间,要求:签订日期 + 年限 - 1天
let contract= {
	contractStartDate: '2020-09-10',//合同签订日期
	contractPeriod: '5年' //合同年限
}
let contractStartDate = new Date(staff.entryDate), // 获取合同签订日期
	contractPeriod = staff.probation.substring(0, staff.probation.length - 1) //截取年份数字

contract.contractEndDate = new Date(
	entryDate.getFullYear + Number(contractPeriod), 
	entryDate.getMonth,
	entryDate.getDate() - 1) //获取合同到期日期
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值