• 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

  • 相关阅读:
    使用微软消息队列实现C#进程间通信(转)
    JavaScript获得页面区域大小的代码
    我的第一份外包经历及所得 (转)
    用Aptana调试JavaScript教程(转)
    NET中的消息队列
    c#线程基础之线程控制
    c#线程基础之原子操作
    sql2005分区表示例
    系统资源调用和shell32.dll简介
    Windows API入门简介
  • 原文地址:https://www.cnblogs.com/muzhuang/p/4434434.html
Copyright © 2020-2023  润新知