【问题标题】:How do I find the difference between 2 dates?(AngularCLI,NgbDateStruct)如何找到 2 个日期之间的差异?(AngularCLI,NgbDateStruct)
【发布时间】:2020-05-08 05:28:31
【问题描述】:

这是我的 html

这是我的组件

模型:NgbDateStruct

模型2:NgbDateStruct

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

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

示例“parserFormat = 2020-04-30”

那么我怎样才能找到两个日期之间的差异,例如 enddate - start date = 5 days

【问题讨论】:

  • 到目前为止你尝试过什么?另外,请不要发布代码图像(不是 HTML 与此处相关......)
  • 如果您将代码复制并粘贴为代码而不是屏幕截图可能会很好
  • 其实到目前为止我还没有尝试过任何事情,我不知道我该怎么做我以前没有尝试过的事情。 @KurtHamilton
  • @CemKocagöz pek kullanmayı bilmiyorum kusura bakma :D
  • @zafer 你平时是怎么学习的?试着想想你有什么样的数据结构,以及你可能需要执行什么样的操作才能产生你想要的输出。研究这些领域。我最初的评估是您有 2 个类型为 NgbDateStruct 的对象。这些不是标准的 Javascript 日期。要么在NgbDateStruct 中内置了一个函数来执行日期操作,要么你可以转换成 Javascript 日期并在网上找到很多相关的答案。

标签: angular firebase-realtime-database angular-cli


【解决方案1】:

您可以使用Number(date_variable) 将日期转换为毫秒,然后获得 2 个日期毫秒之间的差异。类似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)" };
    }
  }

【讨论】:

  • 谢谢,我会试试的
【解决方案2】:

使用 momentjscom npm install moment --save

在您的组件中:

import Moment from 'moment';

示例:

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

【讨论】:

  • 这是我正在寻找的答案,非常感谢
  • 我从来没有理解过使用 momentjs 来了解两个 Dates diff=(Date1.getTime()-Date2.getTime())/(24*60*60*1000) 之间的区别。如果我们需要做一些更复杂的,那很好,但如果只需要两个日期之间的差异......
【解决方案3】:

根据 ngb-date,这只是一个日期容器。所以你可以得到如下区别:

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");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-20
    • 2014-07-25
    • 2011-07-29
    • 2016-03-20
    • 1970-01-01
    相关资源
    最近更新 更多