【问题标题】:Difference between two dates always give zero Days using javascript两个日期之间的差异总是使用javascript给出零天
【发布时间】:2015-04-16 13:16:13
【问题描述】:

您好,我试图找出两个日期之间的差异,但我一直得到 0 作为答案,任何人都知道为什么请帮忙。我的代码是这样的

  var d1 = "2015-04-30";
  var d2 = "2015-04-14";
  var startDay = new Date(d1);
  var endDay = new Date(d2);
  var millisecondsPerDay = 1000 * 60 * 60 * 24;

  var millisBetween = startDay.getTime() - endDay.getTime();
  var days = millisBetween / millisecondsPerDay;


//If I use df1 and df2 I am getting 0
  var jsondate1 = new Date(getData.startDate).toISOString();
                var jsondate2 = new Date(getData.startDate).toISOString();

                var date = new Date(jsondate1);
                var dates = new Date(jsondate2);

   var df1 = date.getFullYear()  + '-' + (date.getMonth()+1)   + '-'
 +date.getDate() ;
 var df2 = dates.getFullYear()   + '-' +(dates.getMonth()+1) 
   + '-' +dates.getDate() ;


 //If I am using the below two lines the answer is 16 but if I am using the above d1 and d2 the answer is zero 
 var d1 = "2015-4-30";// the date here is made up by console.debug(df1 )
 var d2 = "2015-4-14"; // the date here is made up by console.debug(df2 )

我不知道我哪里做错了

【问题讨论】:

  • 不,我的答案是 0,我不知道是什么
  • days = 16。你从哪里得到 0?你能告诉我们你是如何看待你的结果的吗?
  • console.debug(days) = 0
  • 确认16days 变量。

标签: javascript date


【解决方案1】:

查看 sn-p - 它显示 16。

   var d1 = "2015-04-30";
                  var d2 = "2015-04-14";
                  var startDay = new Date(d1);
                  var endDay = new Date(d2);
                  var millisecondsPerDay = 1000 * 60 * 60 * 24;

                  var millisBetween = startDay.getTime() - endDay.getTime();
                  var days = millisBetween / millisecondsPerDay;
alert(days);

我认为您应该在最后检查您的代码,因为它可以按您的意愿工作,但您的代码中会出现一些代码语法错误。 (可能)

【讨论】:

  • 添加我的问题 console.debug(df1)= 2015-04-30 和 console.debug(df2) = 2015-04-14
【解决方案2】:

它应该按原样工作,但您可以尝试在不调用 getTime() 的情况下减去日期:

var d1 = "2015-04-30";
var d2 = "2015-04-14";
var startDay = new Date(d1);
var endDay = new Date(d2);
var millisecondsPerDay = 1000 * 60 * 60 * 24;

var millisBetween = startDay - endDay;
var days = millisBetween / millisecondsPerDay;
alert(days);

问题更新后:

jsondate1 和 jsondate2 都是使用相同的日期(getData.startDate)创建的,因此差异为 0:

var jsondate1 = new Date(getData.startDate).toISOString();
var jsondate2 = new Date(getData.startDate).toISOString();

【讨论】:

  • 如果我通过分配使用 d1 和 d2 我得到了正确的答案,但如果我在某处得到它们,我得到 0
  • 我不确定您是如何收到约会的?作为字符串?它们的格式是否可以被 Date() 构造函数正确解析?
  • console.debug(df1)= 2015-04-30 和 console.debug(df2) = 2015-04-14
  • 我需要看看 df1 和 df2 是如何提供给你的。你能提供一些更进一步的代码吗?值得注意的是df1和d1不是同一个变量吗?
  • @ReginwaldtLed jsondate1 和 jsondate2 都是使用相同的日期 (getData.startDate) 创建的,因此差异为 0。
【解决方案3】:

如果您只想要日期差异。那么最简单的方法就是。

var d1 = "2015-04-30";
var d2 = "2015-04-14";
Math.floor(( Date.parse(d1) - Date.parse(d2) ) / 86400000);

【讨论】:

    猜你喜欢
    • 2015-09-14
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2011-03-19
    • 2013-07-24
    相关资源
    最近更新 更多