我需要一个帮助。我无法使用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
。如果所选日期仅超过今天的日期,我需要提醒警报信息。请帮助我。
答案 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
。