如何找到两个日期之间的差异?(AngularCLI、NgbDateStruct)

如何找到两个日期之间的差异?(AngularCLI、NgbDateStruct),angular,firebase-realtime-database,angular-cli,Angular,Firebase Realtime Database,Angular Cli,这是我的html 这是我的组件 型号:NgbDateStruct 模型2:NgbDateStruct startDate:this.parserFormatter.format(this.model) endDate:this.parserFormatter.format(this.model2) 示例“parserFormat=2020-04-30” 那么如何才能找到两个日期之间的差异呢?例如enddate-start date=5天您可以使用数字(日期变量)将日期转换为毫秒,然后再获取两个日

这是我的html

这是我的组件

型号:NgbDateStruct

模型2:NgbDateStruct

startDate:this.parserFormatter.format(this.model)

endDate:this.parserFormatter.format(this.model2)

示例“parserFormat=2020-04-30”


那么如何才能找到两个日期之间的差异呢?例如enddate-start date=5天

您可以使用
数字(日期变量)
将日期转换为毫秒,然后再获取两个日期毫秒之间的差异。类似于
Number(endDate)-Number(startDate)
。然后,时间差将以毫秒为单位。然后,您应该使用基本数学将毫秒转换为秒、分钟、小时、天、周等。 例如,我以前使用过这样的函数,虽然不好,但它可以工作

getTimeDifference(ms) {
    var one_day = 1000 * 60 * 60 * 24;

    if ((ms - one_day / 4) / (one_day * 365) >= 1) {
      return {
        time: Math.floor((ms - one_day / 4) / (one_day * 365)),
        type: " Year(s)",
      };
    } else if (ms / (one_day * 30) >= 1) {
      return { time: Math.floor(ms / (one_day * 30)), type: " Month(s)" };
    } else if (ms / (one_day * 7) >= 1) {
      return { time: Math.floor(ms / (one_day * 7)), type: " Week(s)" };
    } else if (ms / one_day >= 1) {
      return { time: Math.floor(ms / one_day), type: " Day(s)" };
    } else if (ms / (one_day / 24) >= 1) {
      return { time: Math.floor(ms / (one_day / 24)), type: " Hour(s)" };
    } else if (ms / 1000 / 60 >= 1) {
      return { time: Math.floor(ms / 1000 / 60), type: " Minute(s)" };
    } else {
      return { time: "", type: " Second(s)" };
    }
  }
使用
npm安装时刻--保存

在您的组件中:

import Moment from 'moment';
例如:

  date1= Moment('2020-04-25');
  date2= Moment('2020-04-30');
  diff = this.date2.diff(this.date1, 'days');
  //diff = 5

根据ngb日期,这只是一个日期容器。因此,您可以得到如下差异:

const date1 = new Date('7/13/2010');
const date2 = new Date('12/15/2010');
const diffTime = Math.abs(date2 - date1);
const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24)); 
console.log(diffTime + " milliseconds");
console.log(diffDays + " days");

到目前为止你试过什么?另外,请不要发布代码的图片(这里的HTML不是相关的…)如果你将代码复制粘贴为代码而不是屏幕快照,那会很好。事实上,到目前为止我还没有尝试过任何东西,我不知道如何做一些我以前没有尝试过的事情@KurtHamilton@CemKocagbilmiyorum kusura bakma:D@zafer你通常是怎样学习的?试着想想您拥有什么样的数据结构,以及为了能够产生所需的输出,您可能需要执行什么样的操作。研究这些领域。我的初步评估是,您有两个类型为
NgbDateStruct
的对象。这些不是标准的Javascript日期。要么是在
NgbDateStruct
中内置了一个函数来执行日期操作,要么你可以转换成Javascript日期,并在互联网上找到许多相关的答案。谢谢你,我会试试这是我在寻找的答案,谢谢你,所以我从来都不想知道两个日期之间的区别=(Date1.getTime()-Date2.getTime())/(24*60*60*1000)。如果我们需要更复杂一些,这是很好的,但如果只需要两个日期之间的差异。。。