Js查询月份的开始和结束日期(附Ts转换代码)
月份开始和结束
整体不是很复杂,使用new Date()方法自带获取最后一天的时间
new Date(a,b,c),传递参数
参数a:是要获取的年份
参数b:是要获取的月份
参数c:是要获取的日期
传递日期为0时获取的传递月份的上月最后一天
时间月份是从0开始算起11结束,所以每次获取月份要加一;也就是当你传递的五月也就是六月,获取开始日期就要减一才能拿到对照日期
例如:
let date = new Date(2022,5,0); console.log(data.getFullYear() + "-" +(data.getMonth()+1)+ "-" +data.getDate());//2022-4-30
// 查询月份开始结束 //开始日期 function getFirstDayOfMonth(year, month) { // return new Date(year, month-1, 1); let data = new Date(year, month - 1, 1); return ( data.getFullYear() + "-" + (data.getMonth() + 1 > 9 ? data.getMonth() + 1 : "0" + (data.getMonth() + 1)) + "-" + (data.getDate() > 9 ? data.getDate() : "0" + data.getDate()) ); } //结束日期 function getLastDayOfMonth(year, month) { let data = new Date(year, month, 0); return ( data.getFullYear() + "-" + (data.getMonth() + 1 > 9 ? data.getMonth() + 1 : "0" + (data.getMonth() + 1)) + "-" + (data.getDate() > 9 ? data.getDate() : "0" + data.getDate()) ); } function test1(){ //示例 println('2018年5月:' + getFirstDayOfMonth(2018,5) + ',' + getLastDayOfMonth(2018,5)); }
PS:以上范文参考原文:https://blog.csdn.net/weixin_61079989/article/details/125946311 未亲测,但逻辑颇正。
以下记录另外一种写法(亲测):
由于最近在写Ts的项目,所以将另外一种方法以及Ts代码附上,留作备份:
Js代码:
//获取时间 传入范例:2023-05 getDateTime(e) { let timeArr = e..split('-') let year = parseInt(timeArr[0]) let month = parseInt(timeArr[1]) this.setData({ showTime: `${year}年${month}月` }) let date = new Date(year, month, 0); //月份减1 let start_time = new Date(year, month - 1, 1).valueOf() / 1000; let end_time = new Date(year, month - 1, date.getDate()).valueOf() / 1000 + 24 * 60 * 60; this.setData({ start_time, end_time }) }
这里返回的是开始时间戳以及结束时间戳
以下是Ts范例(返回的是两个日期,月份第一天、最后一天):
传入范例:2023-05
const getMonthToDateRange = (yearMonth: any) => {
const timeArr = yearMonth.split('-'); const year = parseInt(timeArr[0], 10); const month = parseInt(timeArr[1], 10); const date = new Date(year, month, 0); // 月份减1 // eslint-disable-next-line camelcase const start_time = new Date(year, month - 1, 1).valueOf() / 1000; // eslint-disable-next-line camelcase const end_time = new Date(year, month - 1, date.getDate()).valueOf() / 1000 + 24 * 60 * 60 - 86400; // eslint-disable-next-line camelcase const startTimeN = new Date(start_time * 1000); // eslint-disable-next-line camelcase const endTimeN = new Date(end_time * 1000); const startDate = `${startTimeN.getFullYear()}-${ startTimeN.getMonth() + 1 }-${startTimeN.getDate()}`; const endDate = `${endTimeN.getFullYear()}-${ endTimeN.getMonth() + 1 }-${endTimeN.getDate()}`; // eslint-disable-next-line camelcase return [startDate, endDate]; };
标签:
JavaScript
, TypeScript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了