jhipster 和当前日期显示和检查
jhipster and current date to display and check
看起来很疯狂,但如果日期字段大于当前日期,我找不到在 jhipster 测试创建的 html 中进行比较的方法。
我尝试显示从数据库读取的日期并查看 2020-12-12 然后我尝试显示当前日期。在网上搜索我发现可以得到当前日期: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>
...
通常,使用 MomentJS 库处理日期要容易得多,因为它已经集成到 JHipster 中。
如果您想知道某个日期是否在未来,您可以在 [entity].component.ts
中定义一个 return 是布尔值的函数,如下所示:
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()
将 return 您作为参数传递的日期 (myclass.date
) 与当前日期 (moment()
) 之间的小时差。如果要检查的日期是过去的日期,它将是一个负数。
MomentJS 是一个非常强大的库,您可以查看完整的文档 here。另外,如果需要,与我使用的方法相关的文档:
- isBefore(): 一个日期是否在另一个日期之前
- diff(): 两个日期之间的毫秒差
- duration():可轻松处理持续时间的包装器
- asHours(): 获取持续时间的小时数
看起来很疯狂,但如果日期字段大于当前日期,我找不到在 jhipster 测试创建的 html 中进行比较的方法。
我尝试显示从数据库读取的日期并查看 2020-12-12 然后我尝试显示当前日期。在网上搜索我发现可以得到当前日期: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>
...
通常,使用 MomentJS 库处理日期要容易得多,因为它已经集成到 JHipster 中。
如果您想知道某个日期是否在未来,您可以在 [entity].component.ts
中定义一个 return 是布尔值的函数,如下所示:
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()
将 return 您作为参数传递的日期 (myclass.date
) 与当前日期 (moment()
) 之间的小时差。如果要检查的日期是过去的日期,它将是一个负数。
MomentJS 是一个非常强大的库,您可以查看完整的文档 here。另外,如果需要,与我使用的方法相关的文档:
- isBefore(): 一个日期是否在另一个日期之前
- diff(): 两个日期之间的毫秒差
- duration():可轻松处理持续时间的包装器
- asHours(): 获取持续时间的小时数