javascript 获取三个月前的月初第一天
时间: 2023-08-19 18:05:16 浏览: 243
要获取三个月前的月初第一天,可以使用 JavaScript 的 Date 对象和相关方法来完成。下面是一个示例代码:
```javascript
// 获取当前日期
var currentDate = new Date();
// 获取当前月份
var currentMonth = currentDate.getMonth();
// 计算三个月前的月份
var targetMonth = currentMonth - 2; // 减去2,因为月份是从0开始计数
// 获取当前年份
var currentYear = currentDate.getFullYear();
// 如果目标月份小于0,则需要向前一年
if (targetMonth < 0) {
targetMonth += 12;
currentYear -= 1;
}
// 设置目标日期为目标月份的第一天
var targetDate = new Date(currentYear, targetMonth, 1);
// 输出结果
console.log(targetDate);
```
这段代码将输出三个月前的月初第一天的日期对象。你可以根据需要进行进一步处理或格式化。
相关问题
js获取当前月上月的第一天,和最后一天以yyyy-mm-dd输出
在JavaScript中,你可以使用`Date`对象和一些日期算术来获取当前月上个月的第一天和最后一天。以下是示例代码:
```javascript
// 获取当前日期
var currentDate = new Date();
// 减去一个月
currentDate.setMonth(currentDate.getMonth() - 1);
// 设置月份第一天(0表示月初)
currentDate.setDate(1);
// 输出上个月第一天的 yyyy-mm-dd 格式
var firstDayOfPreviousMonth = currentDate.toISOString().slice(0, 10); // 或者 currentDate.getFullYear() + '-' + (currentDate.getMonth() + 1) + '-01';
// 获取上个月的最后一天
currentDate.end-of-month(); // 这里假设有一个end-of-month方法用于设置日期到当月的最后一天
// 输出上个月最后一天的 yyyy-mm-dd 格式
var lastDayOfPreviousMonth = currentDate.toISOString().slice(0, 10); // 或者 currentDate.getFullYear() + '-' + (currentDate.getMonth() + 1) + '-' + currentDate.getDate();
console.log('上个月第一天:', firstDayOfPreviousMonth);
console.log('上个月最后一天:', lastDayOfPreviousMonth);
```
注意:上述代码中的 `end-of-month()` 方法并不是JavaScript内置的,你需要创建一个自定义函数来完成这个操作。在真实项目中,可以使用第三方库如`date-fns`或者浏览器原生的`new Date().getDate()`、`setMonth()`等方法配合判断。
前端实现近一周、近一个月、近一自然周、近一自然月时间获取,默认当前日期为当天
### 实现指定时间段的时间范围
为了实现在前端获取默认今天为结束日的近7天、近30天、最近一个完整的星期和最近一个完整月份的时间段,可以利用 JavaScript 的 `Date` 对象来计算这些日期区间。
#### 近七天时间范围
通过创建一个新的 `Date` 对象并减去相应的毫秒数来获得过去几天的具体日期:
```javascript
function getPastDaysRange(days) {
const today = new Date();
const pastDate = new Date(today);
pastDate.setDate(today.getDate() - days);
return {
start: formatDate(pastDate),
end: formatDate(today)
};
}
function formatDate(date) {
let day = date.getDate().toString().padStart(2, '0');
let month = (date.getMonth() + 1).toString().padStart(2, '0'); // Months are zero-based
let year = date.getFullYear();
return `${year}-${month}-${day}`;
}
```
对于近七天的情况,则调用此函数传入参数7即可得到所需的结果[^1]。
#### 近三十天时间范围
同样的逻辑适用于近三十天的情形,只需调整传递给上述辅助函数的参数值为30即可完成相应功能。
#### 最近的一个完整星期
要取得最近的一整个星期内的所有日子,可以从当前日期出发向前追溯到上一个星期的第一天(即上周日),再往前推算至该周的第一个工作日(周一)。这里假设每周从周一开始计算:
```javascript
function getLastFullWeekRange() {
const today = new Date();
const currentDayOfWeek = today.getDay(); // Sunday is 0, Monday is 1...
const lastSunday = new Date(today);
lastSunday.setDate(today.getDate() - ((currentDayOfWeek === 0 ? 7 : currentDayOfWeek)));
const previousMonday = new Date(lastSunday);
previousMonday.setDate(lastSunday.getDate() - 6); // Go back to the beginning of that week.
return {
start: formatDate(previousMonday),
end: formatDate(lastSunday)
};
}
```
这段代码会返回最近一次完整的那一整周内的起始与终止日期字符串表示形式。
#### 最近的一个完整月份
最后,针对最靠近现在的那个月份内所有有效日期的选择,可以通过设置月初和月末两个极端情况下的日期来进行处理:
```javascript
function getLastFullMonthRange() {
const now = new Date();
const thisYear = now.getFullYear();
const thisMonth = now.getMonth();
const firstDayOfMonth = new Date(thisYear, thisMonth, 1);
const lastDayOfPrevMonth = new Date(firstDayOfMonth);
lastDayOfPrevMonth.setMonth(now.getMonth(), 0); // Set to the last day of the previous month
return {
start: formatDate(new Date(thisYear, thisMonth - 1, 1)),
end: formatDate(lastDayOfPrevMonth)
};
}
```
以上就是基于纯JavaScript实现的不同类型固定周期内日期选取的方法介绍。如果项目中已经集成了某些UI库比如Layui或其他第三方组件,也可以考虑查阅其官方文档寻找是否有内置的支持选项或是插件可以直接满足需求而不必手动编写额外的功能模块。
阅读全文
相关推荐








