如果日期小于当前日期或等于或大于当前日期,我需要分离数据。日期不应包含时间。 我的代码是
<div ng-app ng-controller="Ctrl">
<div ng-repeat="val in x">
{{val.dt}}
<div ng-if="date > val.dt ">Past</div>
<div ng-if="date < val.dt">Future</div>
<div ng-if="date = val.dt ">Present</div>
</div>
</div>
而angularjs控制器是
$scope.date = new Date();
$scope.x = [{dt:"2018-07-12"},{dt:"2018-07-14"},{dt:"2018-07-10"}];
但是它没有按照我的意愿工作。它给我输出
2018-07-12
Past
Future
Present
2018-07-14
Past
Future
Present
2018-07-10
Past
Future
Present
但是如果当前日期是2018-07-12,我想输出
2018-07-12
Present
2018-07-14
Future
2018-07-10
Past
请让我知道我错了。
答案 0 :(得分:0)
好吧,问题在于您正在将日期与字符串进行比较。
您的date
变量是Date类型,而您的x
数组数据是String。
为简单起见,仅当您的格式为YYYY-MM-DD时,我建议您将date
var格式化为文本:
var d= new Date();
$scope.date = d.getFullYear() + '-' + ("0" + (d.getMonth() + 1)).slice(-2) + "-" + ("0" + d.getDate()).slice(-2)
$scope.x = [{dt:"2018-07-12"},{dt:"2018-07-14"},{dt:"2018-07-10"}];
在angular 1.0.x中:
<div ng-app ng-controller="Ctrl">
<div ng-repeat="val in x">
{{val.dt}}
<div ng-show="date > val.dt">
- Past
</div>
<div ng-show="date < val.dt">
- Future
</div>
<div ng-show="date == val.dt">
- Present
</div>
</div>
答案 1 :(得分:0)
您可以尝试:
<div ng-app ng-controller="Ctrl">
<div ng-repeat="val in x">
{{val.dt}}
<div ng-if="date.getTime() > getTimestamp(val.dt)">Past</div>
<div ng-if="date.getTime() < getTimestamp(val.dt)">Future</div>
<div ng-if="date.getTime() == getTimestamp(val.dt)">Present</div>
</div>
</div>
AngularJs:
$scope.getTimestamp = function(dateTime) {
return new Date(dateTime).getTime();
}