很长一段时间,我有4个字符串,2个用于客户端,2个用于服务器(模拟),这个字符串是客户端中的日期“ 03/06/2016”和“ 2018-11-23T00:00:00 + 01” :00“。
我将字符串转换为日期,然后再次将字符串转换为相同格式的字符串“ dd / mm / aaaa”,然后将字符串放入Split中,最后我解析为int。
当我有2个数字时,我可以比较并过滤角度,它可以运行,但是现在我没有服务器(模拟),现在我也不知道为什么它不运行...
transformDate(filterDate: string) {
let date: any;
if (filterDate !== undefined && filterDate !== '') {
let day, month;
date = filterDate.split('/');
day = date[0];
month = date[1];
if (day.lenght < 2) {
day = '0' + day;
}
if (month.length < 2) {
month = '0' + month;
}
date = parseInt(date[2] + month + day, 10);
} else {
date = false;
}
return date;
}
public filterResult(url: string, id: number, filterDateStart: string, filterDateEnd: string): Observable<any> {
return this.http.get<any>(url).pipe(map(param => {
let filter, dateStart, dateEnd;
dateStart = this.transformDate(filterDateStart);
dateEnd = this.transformDate(filterDateEnd);
if (!isNaN(id)) {
filter = param.filter(
dato => dato.id === id);
} else {
if (!dateStart && !dateEnd) {
filter = param;
} else {
if (dateStart && dateEnd) {
filter = param.filter(dato => {
if (
this.transformDate(new Date(dato.startdatevalidity).toLocaleDateString()) >= dateStart
&& this.transformDate(new Date(dato.enddatevalidity).toLocaleDateString()) <= dateEnd
) {
return filter = dato;
} else {
console.log( 'no entro');
console.log( 'en cliente inicio' , dateStart);
console.log( 'en cliente fin' , dateEnd);
console.log( 'servidor inicio', this.transformDate(new Date(dato.startdatevalidity).toLocaleDateString()));
console.log( 'servidor fin', this.transformDate(new Date(dato.enddatevalidity).toLocaleDateString()));
console.log('type' , typeof(this.transformDate(new Date(dato.startdatevalidity).toLocaleDateString())) );
console.log('type' , typeof(dateStart) );
}});
} else {
if (dateStart && !dateEnd) {
filter = param.filter(dato => {
if (this.transformDate(new Date(dato.startdatevalidity).toLocaleDateString()) >= dateStart) {
return filter = dato;
}});
} else {
filter = param.filter(dato => {
if (this.transformDate(new Date(dato.enddatevalidity).toLocaleDateString()) <= dateEnd) {
return filter = dato;
}});
}
}
}
}
return filter;
}));
在此示例中,我尝试使用DateStart和DateFinish作为日期范围
答案 0 :(得分:0)
我建议您使用 Moment.js 之类的库。
从2.13.0版开始,Moment包含一个打字稿定义文件。
通过NPM安装
npm install moment
导入并在您的Typescript文件中使用
import * as moment from 'moment';
然后,这是一个如何与Moment.js
比较日期的示例:
早于2.0.0
moment().isBefore(Moment|String|Number|Date|Array); moment().isBefore(Moment|String|Number|Date|Array, String);
检查一个时刻是否在另一个时刻之前。第一个参数是 解析(如果尚未解析)。
moment('2010-10-20').isBefore('2010-10-21'); // true
您可以找到有关日期比较here的完整文档。
我希望这会对您有所帮助。