zoukankan      html  css  js  c++  java
  • JS计算两个日期时间之差之天数不正确

    做了一个时间倒计时,发现天数总是不正确。

    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);

     木庄网络博客:http://www.muzhuangnet.com/show/284.html

  • 相关阅读:
    strcpy 详解
    c/c++中static详解
    c/c++中const详解
    12、Java中的接口
    11、java中的模板方法设计模式
    10、java中的抽象类
    9、java中的final关键字
    8、java继承中的this和super的应用
    7、java实现的两种单例模式
    6、java中的构造代码块
  • 原文地址:https://www.cnblogs.com/muzhuang/p/4434434.html
Copyright © 2011-2022 走看看