说起JavaScript里获取月份这个事,很多小伙伴不小心踩坑了,getMonth()这个方法可不简单哦!它返回的是0~11之间的数字,0代表1月,1代表2月,依此类推…所以,如果你想拿到真正的月份数字,是不是得getMonth()+1啦!别急,这可不是bug,是JS设计的“怪癖”之一。
接下来,咱们先用个简单例子示范下获取当前完整的日期:
var myDate = new Date();
var year = myDate.getFullYear(); // 今年是哪年,四位数字,比如2024
var month = myDate.getMonth() + 1; // 注意,要加1才是真实月份哦
var day = myDate.getDate(); // 几号了,1~31
var hour = myDate.getHours(); // 几点钟
var minute = myDate.getMinutes(); // 几分了
var second = myDate.getSeconds(); // 几秒了
这样,我们就能很轻松地得到“2024年6月12日 14:30:20”这种格式的时间啦。说实话,这加1的坑让人哭笑不得,不过掌握了就好!

嘿,说到月份天数估计大家都很关心,每个月多少天呢?这个问题JS帮咱们解决得非常棒,写个函数简简单单:
new Date(year, month, 0) 特性:当天数传0时,JS会自动返回上个月的最后一天。getDate()方法拿到这一天的日子数。代码就是这么写:
function getMonthDays(year, month) {
var thisDate = new Date(year, month, 0); // 这里month是正常月份数字,比如6代表6月
return thisDate.getDate(); // 返回这个月的天数
}
举个栗子:
console.log(getMonthDays(2024, 6)); // 返回6月有多少天
这方法简直棒极了,让你不用自己写复杂判断就能知道一个月有多长!
再来说说获取本月月初和月末时间:
js
var now = new Date();
var year = now.getFullYear();
var month = now.getMonth();js
var monthStart = new Date(year, month, 1); // 当月1号0点0分0秒js
var monthEnd = new Date(year, month + 1, 0, 23, 59, 59); // 当月最后一秒这样,你就能轻松获得本月完整时间段,方便做统计啥的,妥妥的!

为什么JS的getMonth方法返回的月份是从0开始的?
哎,getMonth从0开始实际上是JavaScript的设计历史遗留问题,类似数组下标从0开始那样。刚开始设计Date对象时,为了更好地和数组索引等其他编程习惯对接,月份就用0代表1月,依次递增。虽然有点绕,但只要记得用getMonth()+1,就绝对不会出错啦!
我怎么写代码能准确获取一个月的天数?
嘿,这事超简单!你只要用 new Date(year, month, 0),把“天”参数传0,JS会帮咱自动跳到上个月最后一天,再用getDate()一调用就知道天数啦!真的很酷,节省好多手动计算的麻烦哦~
怎么快速拿到当前月的开始和结束时间?
妥妥的,这种需求很常见啦。创建Date对象,设置日期为1号就是月初;月末话,构造下月1号日期,再把日期减1就行,或者直接传0给日期参数,JavaScript会帮你跳到当月最后一日。配合小时分钟秒设置成全月的开头和末尾,整整齐齐的时间跨度一秒不差!
JS中如何获取当前完整日期和时间的啊?
好啦,这也是一个基本操作!用new Date()直接生成当前时间对象。然后分别用getFullYear(), getMonth()+1, getDate(), getHours(), getMinutes(), getSeconds()把所需的信息都挨个撸出来。拼一拼字符串,就是完美的当前时间啦,做任何时间相关的功能都超有用,试试你就知道!
添加评论