无法使用Angular.js / Javascript正确比较日期

时间:2016-06-03 13:09:57

标签: javascript angularjs date

我需要一个帮助。我无法使用Angular.js或JavaScript将所选日期与今天的日期进行比较。我正在解释下面的代码。

var today=new Date();
console.log('2 dates',today,$scope.date);

从上面的控制台我得到如下的输出。

2 dates Fri Jun 03 2016 18:29:16 GMT+0530 (India Standard Time) 03-06-2016

if(today > new Date($scope.date.split("-").reverse().join(","))){
    alert('Please select  future delivery date');
}

在这里我需要假设我选择的日期是03-06-2016,今天的日期是03-06-2016警报提示不应该来。但在我的情况下它不会发生这样的事情。如果选择此警报消息也会出现日期为03-06-2016。如果所选日期仅超过今天的日期,我需要提醒警报信息。请帮助我。

3 个答案:

答案 0 :(得分:2)

构建日期时,月份为零索引:

console.log(new Date(2016,06,03));

"2016-07-03T04:00:00.000Z" // you expected June, but got July.

另请注意,它设置为午夜:同一天运行的任何new Date()都将大于该值。

日期的字符串操作风险很大且容易出错,这就是为什么每个人都会跪在你身边(这实际上是一个非常好的库,如果你做了很多日期操作,也值得使用)。

至少,您可能需要考虑在$scope.date中使用不那么模糊的日期格式,但如果您坚持使用,在这种情况下,您需要在构建{时从月中减去1 {1}}来自它:

Date

答案 1 :(得分:0)

不要使用原生<来比较JavaScript日期。或者>运营商;安装并使用moment.js - 它将为您解决所有困难:

if(moment(new Date()).isAfter(moment($scope.date, "MM-DD-YYYY"), 'day')) { ...

答案 2 :(得分:0)

转换为timestamp进行比较:

$scope.date = '2016-06-01';
var currentDate = new Date().valueOf();
var date = new Date($scope.date).valueOf();

if (currentDate > date) {
  // something
}

您使用multi timezone,请将两者都转换为timezone