javascript 获得上个月、获取下个月日期

本文介绍了一系列JavaScript函数,用于计算指定月份的天数、获取上一个月和下一个月的日期。这些函数对于开发需要处理日期的应用非常有用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. Date.getDayOfMonth = function (y, Mm) {  
  2.     /// <summary>  
  3.     /// 计算当前月一共多少天  
  4.     ///create by 长江 20121225  
  5.     /// </summary>  
  6.     /// <returns type="Number" />  
  7.     /// <param name="y" type="Number">  
  8.     ///     年,若为空则为当前时间  
  9.     /// </param>  
  10.     /// <param name="Mm" type="Number">  
  11.     ///     月,0开始,若为空则为当前时间  
  12.     /// </param>  
  13.     if (typeof y == 'undefined') { y = (new Date()).getFullYear(); }  
  14.     if (typeof Mm == 'undefined') { Mm = (new Date()).getMonth(); }  
  15.     var Feb = (y % 4 == 0) ? 29 : 28;  
  16.     var aM = new Array(31, Feb, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);  
  17.     return  aM[Mm];  
  18. };  
  19. Date.getDateOfPreMonth = function (dt) {  
  20.     /// <summary>  
  21.     /// 返回上一月的日期  
  22.     ///create by 长江 20121225  
  23.     /// </summary>  
  24.     /// <returns type="Date" />  
  25.     /// <param name="dt" type="Date">  
  26.     ///     参照日期,若为空则为当前时间  
  27.     /// </param>   
  28.     if (typeof dt == 'undefined') { dt = (new Date()); }  
  29.     var y = (dt.getMonth() == 0) ? (dt.getFullYear() - 1) : dt.getFullYear();  
  30.     var m = (dt.getMonth() == 0) ? 11 : dt.getMonth() - 1;  
  31.     var preM = Date.getDayOfMonth<span style="font-family: Arial, Helvetica, sans-serif;">(y, m);</span>  
  32.     var d = (preM < dt.getDate()) ? preM : dt.getDate();  
  33.     return new Date(y, m, d);  
  34. };  
[javascript]  view plain  copy
  1. Date.getDateOfNextMonth = function (dt) {  
  2.     ///<span style="white-space:pre">   </span><summary>  
  3.     ///<span style="white-space:pre">   </span>返回下一月的日期  
  4.     ///create by 长江 20121225  
  5.     ///<span style="white-space:pre">   </span></summary>  
  6.     ///<span style="white-space:pre">   </span><returns type="Date" />  
  7.     ///<span style="white-space:pre">   </span><param name="dt" type="Date">  
  8.     ///<span style="white-space:pre">       </span>参照日期,若为空则为当前时间  
  9.     ///<span style="white-space:pre">   </span></param>   
  10.     if (typeof dt == 'undefined') { dt = (new Date()); }  
  11.     var y = (dt.getMonth() == 11) ? (dt.getFullYear() + 1) : dt.getFullYear();  
  12.     var m = (dt.getMonth() == 11) ? 0 : dt.getMonth() + 1;  
  13.     var preM = Date.getDayOfMonth(y, m);  
  14.     var d = (preM < dt.getDate()) ? preM : dt.getDate();  
  15.     return new Date(y, m, d);  
  16. };  
### 使用 JavaScript 获取当前日期和前一个月的日期 为了获取当前日期以及前一个月的具体日期,在 JavaScript 中可以创建 `Date` 对象并操作其属性。 #### 获取当前日期 通过实例化一个新的 `Date` 对象可以直接获得代表此刻时间的对象。接着调用该对象的方法如 `getFullYear()`、`(getMonth() + 1)` 和 `getDate()` 可分别取得完整的年份数字、月份(需加一因为默认从零开始计算)、具体的日数: ```javascript // 创建一个表示现在的 Date 实例 var currentDate = new Date(); // 提取各部分组成字符串形式的日期表达 var currentYear = currentDate.getFullYear(); // 年份 var currentMonth = currentDate.getMonth() + 1; // 月份 (范围应为1到12) var currentDay = currentDate.getDate(); // 日子 console.log(`今天的日期是 ${currentYear}-${String(currentMonth).padStart(2, '0')}-${String(currentDay).padStart(2, '0')}`); ``` 这段代码会打印出形如 "今天是 YYYY-MM-DD" 的消息[^1]。 #### 计算上个月的第一天到最后一天 对于求解上个月的信息,则可以通过调整现有的 `Date` 对象来完成。这里的关键在于理解当我们将某月设为其之前的某个负数值时,JavaScript 自动处理溢出情况的能力——即自动向前推进至前几个月甚至更早的时间点。下面展示了一种方法用于得到指定月份的第一个与最后一个日子: ```javascript function getLastAndFirstDayOfPreviousMonth(date) { const firstDayThisMonth = new Date(date.getFullYear(), date.getMonth(), 1); const lastDayPrevMonth = new Date(firstDayThisMonth.setDate(0)); const firstDayPrevMonth = new Date(lastDayPrevMonth.getFullYear(), lastDayPrevMonth.getMonth(), 1); function formatDate(d) { return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2,'0')}-${String(d.getDate()).padStart(2,'0')}`; } return { start: formatDate(firstDayPrevMonth), end: formatDate(lastDayPrevMonth) }; } const today = new Date(); const prevMonthDates = getLastAndFirstDayOfPreviousMonth(today); console.log(`上个月的第一天是${prevMonthDates.start},最后一天是${prevMonthDates.end}.`); ``` 此函数接收任意给定的一个 `date` 参数,默认情况下传入的是今日的新建 `Date` 对象。它返回一个包含两个键值对的对象:一个是上个月第一天的确切日期,另一个则是那个月的最后一刻。这两个值都被转换成了易于阅读的形式 "YYYY-MM-DD"[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值