
本文介绍如何使用原生 JavaScript 快速、准确地获取当前日期的“日”(day of month)数值,并以无前导零的整数形式(如 5 或 23)直接用于条件判断,无需字符串格式化或第三方库。
本文介绍如何使用原生 javascript 快速、准确地获取当前日期的“日”(day of month)数值,并以无前导零的整数形式(如 `5` 或 `23`)直接用于条件判断,无需字符串格式化或第三方库。
在 JavaScript 中,获取当前日期的“日”(即每月第几天,范围为 1–31)最简洁、标准的方式是调用 Date.prototype.getDate() 方法。该方法返回一个不带前导零的十进制整数(例如:1 月 5 日返回 5,10 月 23 日返回 23),天然适配数值比较逻辑——这与 PHP 中 date("d") 返回带前导零字符串(如 "05")的行为有本质区别,但恰恰更利于 if/else 数值判断。
✅ 正确用法:getDate() 返回纯数字,可直接比较
const day = new Date().getDate(); // 返回 1–31 的整数,例如:7、24、31
if (day <= 10) {
console.log(`当前是本月上旬(${day}日),执行 A 操作`);
} else if (day >= 20) {
console.log(`当前是本月下旬(${day}日),执行 B 操作`);
} else {
console.log(`当前是月中(${day}日),执行 C 操作`);
}⚠️ 注意:getDate() 返回的是本地时区下的日期。若需跨时区精确控制(如面向全球用户的应用),应结合 getUTCDate() 或使用专业时间库(如 date-fns 或 luxon),但对绝大多数日常业务逻辑(如按日触发运营活动、分段展示内容等),getDate() 完全足够且轻量。
❌ 常见误区辨析
- new Date().toString().slice(8, 10) 或正则提取:不可靠,依赖字符串格式,易受语言环境或浏览器实现影响;
- String(new Date().getDate()).padStart(2, '0'):虽能生成 "05",但属于冗余操作——你的目标是数值判断,而非显示格式;
- 混淆 getDate() 与 getDay():后者返回星期几(0=Sunday, 6=Saturday),完全无关。
? 补充:如需带前导零的字符串(仅用于显示)
尽管本场景无需此操作,但若后续需渲染成 "05" 格式,推荐现代写法:
const day = new Date().getDate();
const dayStr = day.toString().padStart(2, '0'); // "05", "23"
// 或使用 Intl.DateTimeFormat(更国际化)
const formatter = new Intl.DateTimeFormat('en-US', { day: '2-digit' });
const dayStr2 = formatter.format(new Date()); // 同样输出 "05"✅ 总结
- ✅ 用 new Date().getDate() 获取当前日份数值(1–31 整数);
- ✅ 直接用于 if (day < 10)、if (day === 15) 等数值比较,语义清晰、性能最优;
- ✅ 避免字符串解析、日期库引入等过度设计;
- ✅ 仅当涉及复杂时区、相对时间计算或国际化格式时,再考虑 date-fns、luxon 等方案。
一行代码,零依赖,精准满足你的分支逻辑需求。
立即学习“Java免费学习笔记(深入)”;










