使用角度计算两个日期之间的差异(以天为单位)

问题描述 投票:0回答:6

在我的应用程序中,我从 API 响应获取消息发送日期,我想使用 AngFor 中的 Angular 8 和映射来计算当前日期与 API 响应日期之间的差异(以天为单位)。

https://stackblitz.com/edit/angular-xv1twv?file=src%2Fapp%2Fapp.component.html

请帮助我。我应该使用时刻吗?

javascript angular typescript date angular8
6个回答
27
投票

如果这就是您所需要的,您可以添加纯代码。例如:

calculateDiff(dateSent){
    let currentDate = new Date();
    dateSent = new Date(dateSent);

    return Math.floor((Date.UTC(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate()) - Date.UTC(dateSent.getFullYear(), dateSent.getMonth(), dateSent.getDate()) ) /(1000 * 60 * 60 * 24));
}

您需要更新 HTML 才能发送正确的日期。

示例:https://stackblitz.com/edit/angular-bf5qer?file=src/app/app.component.ts

代码改编自https://www.w3resource.com/javascript-exercises/javascript-date-exercise-8.php,可能需要一些测试。


10
投票

你不需要使用momentjs。

更新:

如果您需要考虑夏令时,请不要使用

getTime
,而是使用
Date.UTC

  calculateDiff(data){
    let date = new Date(data.sent);
    let currentDate = new Date();

    let days = Math.floor((Date.UTC(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate()) - Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()) ) /(1000 * 60 * 60 * 24));

    return days;
  }

<div *ngFor="let data of responseData" class="dataHolder">
  <div>{{data.title}}</div>
  <div>{{data.type}}</div>
  <div>{{data.msg}}</div>
   Message sent on: <div>{{data.sent}}</div>
   <div style="font-weight:bold;">sent {{calculateDiff(data)}}_ days ago</div>
</div>

之前的回答:

  calculateDiff(data){
    let date = new Date(data.sent);
    let currentDate = new Date();

    let days = Math.floor((currentDate.getTime() - date.getTime()) / 1000 / 60 / 60 / 24);
    return days;
  }

<div *ngFor="let data of responseData" class="dataHolder">
  <div>{{data.title}}</div>
  <div>{{data.type}}</div>
  <div>{{data.msg}}</div>
   Message sent on: <div>{{data.sent}}</div>
   <div style="font-weight:bold;">sent {{calculateDiff(data)}}_ days ago</div>
</div>


3
投票

尝试这样:

工作演示

.html

<div style="font-weight:bold;">sent {{calculateDiff(data.sent)}}_ days ago</div>

.ts

calculateDiff(sentDate) {
    var date1:any = new Date(sentDate);
    var date2:any = new Date();
    var diffDays:any = Math.floor((date2 - date1) / (1000 * 60 * 60 * 24));

    return diffDays;
}

3
投票

工作演示

  <div style="font-weight:bold;">sent {{calculateDiff(data.sent)}} days ago</div>  

ts 文件:

 calculateDiff(sentOn){

            let todayDate = new Date();
            let sentOnDate = new Date(sentOn);
            sentOnDate.setDate(sentOnDate.getDate());
            let differenceInTime = todayDate.getTime() - sentOnDate.getTime();
            // To calculate the no. of days between two dates
            let differenceInDays = Math.floor(differenceInTime / (1000 * 3600 * 24)); 
            return differenceInDays;
      }

0
投票

在 html 中,将 dateString 传递给 calculateDiff 函数

<div style="font-weight:bold;">sent {{calculateDiff(data.sent)}} days ago</div>

在你的ts中,像这样改变你的代码,

calculateDiff(date: string){
    let d2: Date = new Date();
    let d1 = Date.parse(date); //time in milliseconds
    var timeDiff = d2.getTime() - d1;
    var diff = timeDiff / (1000 * 3600 * 24);
    return Math.floor(diff);
}

0
投票

请参阅这个。你必须通过日期

calculateDiff(data.sent)

© www.soinside.com 2019 - 2024. All rights reserved.