【发布时间】:2018-12-30 23:46:46
【问题描述】:
我正在尝试以角度比较 2 个日期。
我的组件如下所示:
@Input() holidays: Holiday[];
beforeMonthViewRender({ body }: { body: CalendarMonthViewDay[] }): void {
let plannedHoliday: Holiday[];
body.forEach(day => {
plannedHoliday = this.holidays.filter(x => {
const h = new Date(x.date),
d = typeof day.date;
console.log('Render ' + new Date(x.date) + ' ' + day.date + ' ' +
(new Date(h.getFullYear(), h.getMonth(), h.getDate()) === new Date(day.date.getFullYear(), day.date.getMonth(), day.date.getDate()));
return new Date(h.getFullYear(), h.getMonth(), h.getDate()) === new Date(day.date.getFullYear(), day.date.getMonth(), day.date.getDate());
});
}
和我的服务(仅此问题的相关方法):
getHolidays(): Observable<Holiday[]> {
return this.http.get(this._employeeUrl + '/holidays')
.map(response => response)
.catch(this.handleError);
}
我在控制台中得到的是:
渲染 2017 年 3 月 16 日星期四 02:00:00 GMT+0200(东欧标准时间) 2016 年 8 月 8 日星期一 00:00:00 GMT+0300(东欧夏令时间) false 渲染 2016 年 8 月 9 日星期二 07:28:20 GMT+0300(东欧夏令时间) 2016 年 8 月 9 日星期二 00:00:00 GMT+0300(东欧夏令时间) false 渲染 2016 年 8 月 9 日星期二 03:00:00 GMT+0300(东欧夏令时间) 2016 年 8 月 9 日星期二 00:00:00 GMT+0300(东欧夏令时间) false 渲染 2016 年 8 月 10 日星期三 03:00:00 GMT+0300(东欧夏令时间) 2016 年 8 月 9 日星期二 00:00:00 GMT+0300(东欧夏令时间) false 渲染 2016 年 8 月 11 日星期四 03:00:00 GMT+0300(东欧夏令时间) 2016 年 8 月 9 日星期二 00:00:00 GMT+0300(东欧夏令时间) false 渲染 2016 年 8 月 12 日星期五 03:00:00 GMT+0300(东欧夏令时间) 2016 年 8 月 9 日星期二 00:00:00 GMT+0300(东欧夏令时间) false当我尝试调试它时,我发现来自我的数据库 (mongoDB) 的日期实际上是 JSON 格式,所以在我的应用程序中似乎是字符串。
所以,我无法将字符串与日期进行比较。 正如您现在在我的控制台中看到的那样,日期似乎相同,但时间不一样,所以即使我想查看 2016 年 8 月 8 日 === 2018 年 8 月 8 日,因为时间的值它总是错误的。
我该怎么做才能解决这个问题?
【问题讨论】:
-
请将您的控制台日志发布为文本,而不是图像。有些人因为代理而看不到 imgur。
-
尝试使用 setHours(0, 0, 0)
-
1.如果您可以发布文字,请不要发布图片; 2.尽量减少你的问题(见stackoverflow.com/help/mcve 3.你可以使用moment.js
标签: javascript angular date