js获取当前时间和之前的时间以及之前的每一天

本文介绍了使用JavaScript进行日期和时间操作的方法,包括获取当前时间、计算指定天数前的日期及生成过去一周每天的日期等实用功能。

1、获取当前的时间:

let i = new Date();
let newTime = i.toLocaleDateString();

    用moment完成时间的转换

let now = new Date();
let date = new Date(now.getTime());
let time = moment(date,'x').format('YYYY-MM-DD HH:mm:ss');

2、获取之前的某一天的时间:

let now = new Date();
let date = new Date(now.getTime());
let year = date.getFullYear();
let month = date.getMonth() + 1;
let day = date.getDate();
let newTime = year + '-' + month + '-' + day;

3、获取之前一周的每一天的日期:

let myDate = new Date();
myDate.setDate(myDate.getDate());
let dateArray = [];
let dateTemp;
let flag = 1;
for (let i = 7; i > 0; i--) {
dateTemp = myDate.getFullYear() + "-" + (myDate.getMonth()+1) + "-" + myDate.getDate();
dateArray.push(dateTemp);          
myDate.setDate(myDate.getDate() - flag);
}




### JavaScript 获取当前月份第一天最后一天 以下是两种方法来实现获取当前月份的第一天最后一天: #### 方法一:基于 `Date` 对象的简单逻辑 这种方法利用了 `Date` 构造函数的特点,即可以通过设置非法日期自动调整到合法范围的功能。 ```javascript function getMonthFirstAndLast() { const today = new Date(); // 获取当月第一天 const firstDay = new Date(today.getFullYear(), today.getMonth(), 1); // 获取当月最后一天 const lastDay = new Date(today.getFullYear(), today.getMonth() + 1, 0); return [ formatDate(firstDay), formatDate(lastDay) ]; } // 辅助函数用于格式化日期为 YYYY-MM-DD 的形式 function formatDate(date) { const y = date.getFullYear(); const m = String(date.getMonth() + 1).padStart(2, '0'); const d = String(date.getDate()).padStart(2, '0'); return `${y}-${m}-${d}`; } ``` 此方法的核心在于理解 `new Date(year, monthIndex, day)` 中参数的作用。通过将 `day` 设置为 `1` 可获得当月的第一天;而将 `monthIndex` 加 1 并将 `day` 设为 `0` 则会返回上一个月的最后一日,也就是目标月份的最后一天[^1]。 调用示例: ```javascript console.log(getMonthFirstAndLast()); // 输出类似于 ["2023-02-01", "2023-02-28"] ``` --- #### 方法二:综合考虑闰年等因素的手动计算法 如果希望更直观地了解每个月的具体天数,则可以采用手动判断的方式。这种方式虽然稍显冗余,但在某些场景下有助于学习基础逻辑。 ```javascript function getMonthRangeManually(yearMonth) { const year = parseInt(yearMonth.slice(0, 4)); const month = parseInt(yearMonth.slice(4, 6)); // 计算第一天 const firstDayFormatted = `${year}年${String(month).padStart(2, '0')}月01日`; // 计算最后一天 let lastDay; if ([4, 6, 9, 11].includes(month)) { lastDay = 30; } else if (month === 2) { const isLeapYear = (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; lastDay = isLeapYear ? 29 : 28; } else { lastDay = 31; } const lastDayFormatted = `${year}年${String(month).padStart(2, '0')}月${String(lastDay).padStart(2, '0')}日`; return [firstDayFormatted, lastDayFormatted]; } ``` 这种写法适合初学者深入理解日期规则,但对于实际开发来说可能不够简洁高效[^2]。 --- #### 综合推荐方案 对于现代前端项目而言,通常建议优先选用内置 API 或第三方库(如 moment.js 或 day.js)。但如果仅需简单的功能扩展,可以直接使用如下封装好的工具函数: ```javascript function getCurMonthFirstOrLast(type = 2) { const curT = new Date(); const y = curT.getFullYear(); // 获取年份 const m = curT.getMonth() + 1; // 获取月份 const daysInMonth = new Date(y, m, 0).getDate(); const formattedM = String(m).padStart(2, '0'); // 补零操作 switch (type) { case 0: // 第一天 return `${y}/${formattedM}/01`; case 1: // 最后一天 return `${y}/${formattedM}/${daysInMonth}`; default: // 当前日期 const d = curT.getDate(); return `${y}/${formattedM}/${String(d).padStart(2, '0')}`; } } ``` 以上代码片段能够灵活应对不同需求情境下的日期提取任务[^3]。 --- ### 总结 无论是借助原生 `Date` 对象还是引入外部依赖,都可以轻松完成对指定时间段边界值的捕获工作。具体选择取决于个人偏好以及项目的复杂程度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值