JavaScript中的setMonth()方法的小问题 解决:setMonth(month, 1)

本文探讨了JavaScript中setMonth()方法在处理月份时可能导致日期顺延的问题,详细解释了其原因,并提供了三种解决方案:设置月份时与日期一同调整、初始化Date对象时指定日期、使用setFullYear()同时设置年、月、日。

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

      今天测试人员发现一个问题,从英文日期转化中文日期,月份总会有“6月”变为“7月”。于是我在本地反复测试,发现如下规律:只要setMonth()的参数为小于31天的月份时就会变为下一个月。
       原因是:因为当前月份是31天,而设置的月份小于31天,就会把日期顺延。在setMonth的说明是这样的:
setMonth 方法
设置 Date 对象中用 本地时间表示的月份值。
dateObj.setMonth(numMonth[, dateVal])
参数
dateObj
必选项。任意 Date 对象。
numMonth
必选项。一个等于月份值的数值。
dateVal
可选项。一个代表日期的数值。如果没有提供此参数,那么将使用通过调用 getDate 方法而得到的数值。

       所以,从对dataVal参数的说明可以看出,在设置月份的同时,使用getDate获取日期,并使用得到的日期值设置了日期。于是就会发生月份顺延的情况。

      解决方法:
      1、设置月份时,将日期设为1,记setMonth(month, 1),当然可以在setMonth之前先调用setDate()设置日期;
      2、也可以在初始化Date对象时,就指定一个日期,也就是使用:dateObj = new Date(year, month, date[, hours[, minutes[, seconds[,ms]]]]) 的形式。
   3、也可以使用setFullYear()同时设置年、月、日,即setFullYear(numYear[, numMonth[, numDate]])。

 

posted on 2015-03-23 13:00 天使半只翼 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/william-lin/p/4359504.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值