Javascript Angularjs使用ng show condition比较两种不同的日期格式

Javascript Angularjs使用ng show condition比较两种不同的日期格式,javascript,angularjs,date,datetime,Javascript,Angularjs,Date,Datetime,我有一个用AngularJS制作的日历应用程序,它从三个不同的API端点提取数据。我在使用ng show比较数据端点的一系列日期与Javascript生成的日期时遇到问题 代码如下: <tr ng-repeat="date in futureDates"> <td> {$ date | date : 'yyyy-MM-dd' $} </td> <td ng-repeat="users in calendar_users track by $

我有一个用AngularJS制作的日历应用程序,它从三个不同的API端点提取数据。我在使用
ng show
比较数据端点的一系列日期与Javascript生成的日期时遇到问题

代码如下:

<tr ng-repeat="date in futureDates">
   <td> {$ date | date : 'yyyy-MM-dd' $} </td>
    <td ng-repeat="users in calendar_users track by $index" 
        ng-show="users.fields.team_name == team.pk">
       <span ng-repeat="activities in calendar_activities track by $index" 
             ng-show="activities.fields.user == users.fields.username && 
                      activities.fields.date == date | date 'yyyy-MM-dd'">
             {$activities.fields.activity$}
             {$activities.fields.date | date $}
       </span>
    </td>
</tr>
更改为:

 <span ng-repeat="activities in calendar_activities track by $index" 
       ng-show="activities.fields.user == users.fields.username">`
`
(注意:我已经删除了
和&activities.fields.date==date | date'yyyy-MM-dd'
) 第一个条件计算成功,只有日期的计算结果不正确

信息正确地绑定到日历上的每个人,剩下的唯一问题是没有将单元格中的信息与日历上的日期进行比较,因此,列中每个单元格上都会显示该人的预订


希望我已经提供了足够的信息来理解我所要做的事情的上下文。非常感谢任何帮助或建议。

您正在尝试比较字符串和日期对象,这就是为什么第二个条件总是失败的原因。格式化日期
日期|日期“yyyy-MM-dd”
不会更改数据类型。这就是仅用于显示目的。同时比较两个日期是否相等总是很棘手的,因为两个日期对象完全不同,即使它们具有相同的日期。这是解决此问题的一种方法

<span ng-repeat="activities in calendar_activities track by $index" 
  ng-show="activities.fields.user == users.fields.username && 
          compareDate(activities.field.date)">

对比较两个日期给出了更详细的解释。

您试图比较字符串和日期对象,这就是为什么第二个条件总是失败的原因。格式化日期
date | date“yyyy-MM-dd”
不会改变数据类型。这只是为了显示目的。还可以比较两个日期是否相等这是个棘手的问题,因为两个日期对象完全不同,即使它们有相同的日期。这是解决这个问题的一种方法

<span ng-repeat="activities in calendar_activities track by $index" 
  ng-show="activities.fields.user == users.fields.username && 
          compareDate(activities.field.date)">

对比较两个日期给出了更详细的解释。

为什么不制作一个函数,将日期以相同的格式输入,如果它们相等或不相等,则返回?而不是在html中制造这样的混乱,尝试应用管道等等。为什么不制作一个函数,将日期以相同的形式输入at和返回值是否相等?与其在html中造成如此混乱,不如尝试应用管道等等。
<span ng-repeat="activities in calendar_activities track by $index" 
  ng-show="activities.fields.user == users.fields.username && 
          compareDate(activities.field.date)">
$scope.compareDate = function(fieldDateStr){
var fieldDate= new Date(fieldDateStr);

if(fieldDate.getDate() == $scope.date.getDate() && 
fieldDate.getMonth() == $scope.date.getMonth() && 
fieldDate.getYear() == $scope.date.getYear()){
    return true;
}
else{
    return false;
}

        };