【问题标题】:Comparing two dates using if statement not working - javascript + nodejs [duplicate]使用 if 语句比较两个日期不起作用 - javascript + nodejs [重复]
【发布时间】:2018-01-15 11:35:27
【问题描述】:

下面是我的代码:

var date = new Date().toLocaleString();
console.log(date); // output: 2018-01-15 16:39:00

var schedule = 2018-01-15 16:39:00 (which is coming from my html form, i putting this date in one input box and getting into variable called schedule).
console.log(schedule); // output: 2018-01-15 16:39:00


if(date === schedule) {
console.log('date is matched');
} else {
 console.log('error');
}

这将正确显示为输出://“日期匹配” (我在输入框中输入了这个日期,没有任何日期选择器)。

我的问题是如果我使用日期选择器而不是在输入框中写入日期来执行相同的代码。

我的代码:

var date = new Date().toLocaleString();
console.log(date); // output: 2018-01-15 16:39:00

    var schedule = 2018-01-15 16:39:00 (which is coming from my html form,using date picker).
    console.log(schedule); // output: 2018-01-15 16:39:00


    if(date === schedule) {
    console.log('date is matched');
    } else {
     console.log('error');
    }

现在我在控制台中遇到错误。 我正在使用的日期选择器https://www.npmjs.com/package/angularjs-datetime-picker

【问题讨论】:

  • 好吧,对我来说,new Date().toLocaleString(); 打印出"15/01/2018, 12:39:45",所以由于/- 的差异,它们不可能相等
  • 我将这两个值都设为 - ,但如果我在没有日期选择器的情况下放置它的工作,否则不会。
  • @AnteJablanAdamović toLocaleString() 就是这样做的:它将日期转换为根据用户区域设置格式化的字符串。
  • toLocaleString 的输出完全依赖于实现,并在不同的实现中给出不同的结果。您真正要做的是生成一个字符串以与日期选择器中的值进行比较。

标签: javascript angularjs node.js date datetime


【解决方案1】:

反过来如何:从日期选择器的输出构造一个 Date 对象并比较时间戳。

var date = new Date('2018-01-15 16:39:00');

var schedule = new Date(dateFromYourForm); //From Date picker
   
if(date.getTime() === schedule.getTime()) {
  console.log('date is matched');
} else {
  console.log('error');
}

【讨论】:

【解决方案2】:

schedule 中的日期不是字符串,是日期,而date 中的日期是字符串,因为您在第一行使用了toLocaleString()。比较不起作用,因为您还使用了严格相等运算符 (===),它还会检查变量的类型,而不是仅检查值。

【讨论】:

  • 如果我只放 == 而不是 === 有效吗?
  • 是的,它应该可以工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-28
  • 2012-11-30
  • 2023-02-06
  • 1970-01-01
  • 2011-06-15
  • 1970-01-01
  • 2018-03-29
相关资源
最近更新 更多