JS 获取当前月份:从 getMonth 到格式化的完整写法

2026-11-13 0 9

核心方法:getMonth 返回 0-11

JavaScript 获取当前月份用 Date 对象的 getMonth() 方法:

const now = new Date();

const month = now.getMonth(); // 0 表示一月,11 表示十二月

关键点:getMonth() 的返回值从 0 开始。一月的值是 0,十二月是 11。如果直接把结果当月份使用,所有月份都会差一位。取真实月份要加 1:

const month = new Date().getMonth() + 1; // 1-12

这是「js 获取当前月份」最常见的错误来源,写代码时优先考虑这一点。

需要两位数字时补零

接口参数、日期字符串、表单展示常要求 01 到 12 的格式。用 padStart 补零最简洁:

const month = String(new Date().getMonth() + 1).padStart(2, ‘0’);

不支持 padStart 的旧环境可以写成 ('0' + m).slice(-2),效果一致。

常见格式化场景

只要数字月份

const m = new Date().getMonth() + 1;

中文月份

const m = new Date().getMonth() + 1;

const cn = ${m}月; // “3月”

拼进 yyyy-MM 或 yyyy-MM-dd

const d = new Date();

const ym = ${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, '0')};

用 toISOString().slice(0, 7) 也能得到 yyyy-MM,但它按 UTC 计算,在东八区凌晨时段可能比本地日期早一天甚至跨月,涉及月份边界时不建议使用。

取指定日期的月份

同一个方法适用于任意日期对象,不必局限于当前时间:

const monthOf = (dateStr) => new Date(dateStr).getMonth() + 1;

monthOf(‘2024-12-05’); // 12

注意 new Date('2024-12-05') 这类纯日期字符串按 UTC 解析,而 new Date(2024, 11, 5) 按本地时间构造。跨时区运行时,两者取到的月份在月末月初可能不同,需要统一构造方式。

时区与跨年的注意点

  • getMonth() 取的是本地时区的月份;getUTCMonth() 取 UTC 月份。服务端与客户端时区不一致时,同一时刻可能落在不同月份。
  • 十二月加 1 后是 12,不会溢出到 13,无需特殊处理;但如果做「上个月」这类计算,要自己处理 0 回退到上一年的 12 月。

小结

获取当前月份只需一行 new Date().getMonth() + 1,重点在于记住基准是 0、按需补零、明确时区。把这三件事处理好,月份相关的取值和格式化基本不会出错。

看过这篇文章的人,推荐看以下内容

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

版权声明:所有的源码、软件和资料,不得使用于非法商业用途,不得违反国家法律,一切关于该资源商业行为与本站无关。

免费cms模板 建站百科 JS 获取当前月份:从 getMonth 到格式化的完整写法 https://www.mianfeicms.com/12511.html

我是签名

相关文章

猜你喜欢
发表评论
暂无评论