【问题标题】:How do i find the difference between two dates using Javascript我如何使用Javascript找到两个日期之间的差异
【发布时间】:2012-04-19 09:31:03
【问题描述】:

我想获得特定日期的铰链天数,所以我试图用今天的日期检测特定日期。但这在这里不起作用是我的code 如果日期是下个月 27 我怎么能得到剩余的日子去

    var date2=new Date();
    var date1=27/5/2012;
    var diff = date1.getDate()-date2.getDate();
    var date_reaming = diff.getDate();
    document.write(date_reaming + 'days to go');

【问题讨论】:

标签: javascript


【解决方案1】:

你的代码

date1=27/5/2012

其实就是27除以5除以2012。相当于写

date1 = 0.0026838966202783303

date1 是一个数字,这个数字没有getDate 方法。

如果您将它们声明为实际的日期对象

var date2 = new Date(2012, 3, 19);
var date1 = new Date(2012, 4, 27);

你将能够执行

var diff = date1 - date2;

这将为您提供两个日期之间的毫秒差异。

从这里,您可以像这样计算天数:

var days = diff / 1000 / 60 / 60 / 24;

【讨论】:

    【解决方案2】:
    function getDateDiff(date1, date2, interval) {
        var second = 1000,
        minute = second * 60,
        hour = minute * 60,
        day = hour * 24,
        week = day * 7;
        date1 = new Date(date1).getTime();
        date2 = (date2 == 'now') ? new Date().getTime() : new Date(date2).getTime();
        var timediff = date2 - date1;
        if (isNaN(timediff)) return NaN;
        switch (interval) {
        case "years":
            return date2.getFullYear() - date1.getFullYear();
        case "months":
            return ((date2.getFullYear() * 12 + date2.getMonth()) - (date1.getFullYear() * 12 + date1.getMonth()));
        case "weeks":
            return Math.floor(timediff / week);
        case "days":
            return Math.floor(timediff / day);
        case "hours":
            return Math.floor(timediff / hour);
        case "minutes":
            return Math.floor(timediff / minute);
        case "seconds":
            return Math.floor(timediff / second);
        default:
            return undefined;
        }
    }
    
    console.log(getDateDiff('19/04/2012', '27/5/2012', 'days'));
    

    【讨论】:

      【解决方案3】:

      jQuery 没有内置的日期管理功能。试试:http://momentjs.com/

      【讨论】:

        【解决方案4】:

        我认为你可以减去它:

        var date2 = new Date(2012, 3, 19); // 1st argument = year, 2nd = month - 1 (because getMonth() return 0-11 not 1-12), 3rd = date
        var date1 = new Date(2012, 4, 27);
        var distance = date1.getTime() - date2.getTime();
        distance = Math.ceil(distance / 1000 / 60 / 60 / 24); // convert milliseconds to days. ceil to round up.
        document.write(distance);
        

        【讨论】:

          【解决方案5】:

          这是答案,我是从here 找到的,我的 js-fiddle 是 here

          var d = new Date();
          var curr_date = d.getDate();
          var curr_month = d.getMonth();/* Returns the month (from 0-11) */
          var curr_month_plus= curr_month+1; /* because if the month is  4 it will show output 3 so we have to add +1 with month*/ 
          var curr_year = d.getFullYear();
          function dstrToUTC(ds) {
              var dsarr = ds.split("/");
               var mm = parseInt(dsarr[0],10);
               var dd = parseInt(dsarr[1],10);
               var yy = parseInt(dsarr[2],10);
               return Date.UTC(yy,mm-1,dd,0,0,0); }
              function datediff(ds1,ds2) {
               var d1 = dstrToUTC(ds1);
               var d2 = dstrToUTC(ds2);
               var oneday = 86400000;
               return (d2-d1) / oneday;    }
              var a =curr_month_plus+ '/' + curr_date + '/' + curr_year;
              var b;   
              b = "5/26/2012";
              document.write(+datediff(a,b)+" day(s)<br>");
          

          【讨论】:

            【解决方案6】:

            请理解 jQuery 的用途。

            jQuery 是一个快速简洁的 JavaScript 库,它简化了 HTML 文档遍历事件处理动画处理Ajax 交互 用于快速 Web 开发。

            您想使用 basic Javacript 或 Juan G. Hurtado 所说的另一个库,例如 momentjs

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-09-14
              • 2011-06-24
              • 1970-01-01
              相关资源
              最近更新 更多