Как найти разницу между двумя датами? (AngularCLI, NgbDateStruct) - PullRequest
0 голосов
/ 06 мая 2020

Это мой htmlenter image description here

это мой компонент

модель: NgbDateStruct

model2: NgbDateStruct

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

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

пример «parserFormat = 2020-04-30»

Итак, как я могу найти различия между двумя датами, например, конечная дата - дата начала = 5 дней

Ответы [ 3 ]

1 голос
/ 06 мая 2020

используйте 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
1 голос
/ 06 мая 2020

вы можете преобразовать дату в миллисекунды, используя Number(date_variable), после чего получите разницу между 2 миллисекундами даты. что-то вроде Number(endDate) - Number(startDate). тогда у вас будет разница во времени в миллисекундах. Затем вы должны использовать базовую c математику для преобразования миллисекунд в секунды, минуты, часы, дни, недели и т. Д. c. Например, раньше я использовал такую ​​функцию, но она работает

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)" };
    }
  }
0 голосов
/ 08 мая 2020

Согласно 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");
...