我想直接在html组件中用ngIf 比较两个日期
我试过用这个代码,但没有用,
我想当今天的日期大于vPromoData日期时,不要显示我的div 的内容
<div *ngIf=" item.tabela.vPromo && today < item.tabela.vPromoData " >{{item.tabela.vPromoData | json}}</div>
public today = new Date();
"tabela": {
"itemTabela_id": 2,
"item_id": 7650,
"vVenda": 95.9,
"vPromo": 77.5,
"vPromoData": "2022-09-25"
}
您可以很容易地从toISOString
的Date对象中获取yyyy-MM-dd
,并沿着线切割不必要的部分
const todayAsString = new Date().toISOString().split('T').shift();
console.log(todayAsString);
但是:Angular有一个内置管道date
,用于格式化日期。只需在模板中使用即可
<div *ngIf="item.tabela.vPromo && (today | date: 'yyyy-MM-dd') < item.tabela.vPromoData">
使用每个日期的时间戳。
你可以用yourDate.getTime()
得到它,它返回一个你可以比较的数字。
const date = new Date();
const now = Date.now();
const yesterday = date.setHours(-24);
console.log(now);
console.log(yesterday);
console.log(now > yesterday);
编辑
带有字符串日期,如
const date = '2022-10-18';
const now = new Date(...date.split('-')).getTime();
const yesterday = new Date(...date.split('-')).setHours(-24);
console.log(now);
console.log(yesterday);
console.log(now > yesterday);
由于您有yyyy-MM-dd格式的日期,您可以比较"字符串";,唯一的是转换为字符串";今天";
dateToString(date:any)
{
return date.getFullYear()+'-'+
('00'+(date.getMonth()+1)).slice(-2)+'-'
('00'+date.getDate()).slice(-2)
}
//And use
todayTxt:string=this.dateToString(new Date());
在处理日期时,请使用一些经过良好测试且健壮的库,如可树摇的日期函数库,它支持区域设置,也可与内置的日期对象一起使用。
isAfter(
parse(item.tabela.vPromoData, 'yyyy-MM-dd', new Date()),
new Date()
)