做了一个时间倒计时,发现天数总是不正确。
js代码:
1 //定义目标日期 2 var targetTime = new Date(); 3 4 //目标日期 5 targetTime.setFullYear(2015,5,1); 6 7 //目标时 8 targetTime.setHours(12); 9 10 //目标分 11 targetTime.setMinutes(0); 12 13 //目标秒 14 targetTime.setSeconds(0); 15 16 //目标毫秒 17 targetTime.setMilliseconds(0); 18 19 //转为毫秒数 20 var EndTime = targetTime.getTime(); 21 22 //定义方法 23 function GetCountDownTime() { 24 25 //定义参数返回当天的日期和时间 26 var NowTime = new Date(); 27 28 //得出时间毫秒差 29 var CountDownMS = EndTime - NowTime.getTime(); 30 31 //得出时间天数差 32 var CountDownDays = Math.floor(CountDownMS / (1000 * 60 * 60 * 24 )); 33 34 //得出时间小时差 35 var CountDownH = Math.floor(CountDownMS / (1000 * 60 * 60)) % 24; 36 37 //得出时间分钟差 38 var CountDownM = Math.floor(CountDownMS / (1000 * 60)) % 60; 39 40 //得出时间秒数差 41 var CountDownS = Math.floor(CountDownMS / 1000) % 60; 42 } 43 } 44 45 46 $(document).ready(function () { 47 window.setInterval("GetCountDownTime()", 1000); 48 });
在计算得出的天数中,倒计时总是与定义的目标日期相差30天左右
//目标日期 targetTime.setFullYear(2015,5,1);
问题出在这:
setFullYear()方法的三个参数year,month,day;其中的month表示月份的数值是介于0~11之间。
所以目标日期2015年5月1日应该是
//目标日期 targetTime.setFullYear(2015,4,1);