首页 > 解决方案 > 如何将日期与角度管道进行比较?

问题描述

为什么这个过滤器不起作用?

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
  name: 'inProcess'
})
export class InProcessPipe implements PipeTransform {

  transform(events: any): any {
    if (!events) return events
    return events.filter(function (event) {
      return event.dateStart < Date.now();
    })
  }

}

这是我尝试使用管道的地方,我想带来所有迟到的事件,< 比Date.now(),属性 dateStart 是String我后端的一个值,带有 express 和 mongoose,但它是Date从前端保存的,所以如何我能做到吗?

   <h2 class="text-left text-muted title-margin-top title-style">Late</h2>
    <div *ngFor="let event of events | inProcess">
      <div *ngIf="event.isCompleted === true">
        <div class="card">
      <div class="row">
        <div class="container">
          <div class="single-event col-md-10 col-md-offset-1">
            <div class="event-name">
              <a [routerLink]="['/event', event._id]">
                <h3>{{event.name}}</h3>
              </a>
            </div>
            <p>
              <span class="glyphicon glyphicon-file"></span>
              obra: {{ event.section.name}}
            </p>
            <p>
              <span class="glyphicon glyphicon-time"></span>
              publicado en: {{ event.created_at | date: 'dd / MM / yyyy' }}
            </p>

            <hr>

            <div class="row">
              <div class="container">
                <div class="col-lg-5 col-md-5 col-sm-5 col-xs-5">
                  <p class="card-text CardInfo text-center">Fecha Inicio</p>
                  <div class="text-center">
                    {{ event.dateStart | date: 'dd-MM-yyyy' }}
                    <hr class="style1">
                  </div>
                </div>

标签: angularangular6angular-pipe

解决方案


您进行的比较将始终返回 false。在比较时间戳之前先尝试解析字符串,如下所示:

  transform(events: any): any {
   if (!events) return events
    return events.filter(function (event) {
     return Date.parse(event.dateStart) < Date.now();
   })
 }

推荐阅读