jhipster и текущая дата для отображения и проверки - PullRequest
2 голосов
/ 19 марта 2020

Кажется сумасшедшим, но я не могу найти способ сравнить в html, созданном тестом jhipster, если поле даты больше текущей даты.

Я пытаюсь отобразить дату, прочитанную из БД, и увидеть 2020 -12-12 тогда я пытаюсь отобразить текущую дату. Поиск в net Я могу найти текущую дату, выполнив: new Date(). Поэтому я пытаюсь отобразить это, но при запуске страницы отображается сообщение об ошибке:

ERROR Error: Uncaught (in promise): Error: Template parse errors:
Parser Error: Unexpected token 'Date' at column 5 in [ {{new Date()}} ] in...

как я могу получить текущую дату (для проверки с помощью чтения из базы данных)?

Здесь код myclass.component. html где мне нужно проверить дату:

<div>
    <jhi-alert-error></jhi-alert-error>
...
    <div class="table-responsive" *ngIf="myclasses?.length > 0">
        <table class="table table-striped" aria-describedby="page-heading">
            <thead>
            <tr jhiSort [(predicate)]="predicate" [(ascending)]="reverse" [callback]="transition.bind(this)">
            <th...
            </tr>
            </thead>
            <tbody>
            <tr *ngFor="let myclasse of myclasses ;trackBy: trackId">
                <td>{{myclass?.id}}</td>
                ...
                <td>
                  {{ new Date() }}
                </td>
 ...

1 Ответ

3 голосов
/ 19 марта 2020

Обычно гораздо проще работать с датами, используя библиотеку Момент JS, поскольку она уже интегрирована в JHipster.

Если вы хотите узнать, находится ли дата в В будущем вы можете определить функцию в вашем [entity].component.ts, которая возвращает логическое значение, например:

import * as moment from 'moment';
import { Moment } from 'moment';
...
  isFutureDate(date: Moment): boolean {
    return moment().isBefore(date);
  }

Затем в вашем [entity].component.html вы можете вызвать ее так:

<td>
  Date is in the future: {{ isFutureDate(myclass.date) }}
</td>

Где myclass.date - это дата, которую вы хотите проверить.

Если вам нужно просто узнать разницу между этой датой и сейчас, вы можете сделать это слишком легко. В вашем ...component.ts:

import * as moment from 'moment';
import { Moment } from 'moment';
...
  getDateDiff(date: Moment): number {
    const diff      = date.diff(moment());
    const duration  = moment.duration(diff);
    return duration.asHours();
  }

И в вашем ...component.html:

<td>
  Difference in hours: {{ getDateDiff(myclass.date) | number: '2.0-0' }} hours
</td>

В этом случае getDateDiff() вернет разницу в часах между датой, которую вы передали в качестве аргумента (myclass.date) и текущая дата (moment()). Это будет отрицательное число, если дата проверки была в прошлом.

Момент JS - очень мощная библиотека, полную документацию можно посмотреть здесь . Кроме того, если вы хотите, документация относительно методов, которые я использовал:

  • isBefore () : является ли дата раньше другой
  • diff () : разница между двумя датами в миллисекундах
  • duration () : Оболочка для простой работы с временами
  • asHours () : Получить количество часов в продолжительности
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...