今天測試人員發現一個問題,從英文日期轉化中文日期,月份總會有“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]])。