Как получить дни до даты X и прекратить считать, когда дата X достигает 0 - PullRequest
2 голосов
/ 13 мая 2019

этот код уже получает дни до даты x, но продолжает подсчитывать, когда дата x достигает той же даты, как я могу обнулить его, чтобы остановить подсчет?

const counters = this.state.counters.map((counters, i) => {
  let untildate = counters.date
  let diffDays1=(function(){ 
    let oneDay = 24*60*60*1000 // hours*minutes*seconds*milliseconds
    let secondDate = new Date(untildate);
    let firstDate = new Date();
    return (`${Math.round(Math.abs((firstDate.getTime() - secondDate.getTime())/(oneDay)))} Days`)
  })();

Если дата ввода 2019-04-05T20: 00: 00.782Z, выход должен быть 0

Ответы [ 2 ]

1 голос
/ 13 мая 2019

Используйте Math.max, чтобы получить большее из двух значений. В вашем случае вы хотите вернуть количество оставшихся дней, только если это число больше 0, в противном случае вы хотите вернуть 0:

const counters = this.state.counters.map((counters, i) => {
  let untildate = counters.date
  let diffDays1=(function(){ 
    let oneDay = 24*60*60*1000 // hours*minutes*seconds*milliseconds
    let secondDate = new Date(untildate);
    let firstDate = new Date();
    return (`${Math.max(0, Math.round(Math.abs((firstDate.getTime() - secondDate.getTime())/(oneDay))))} Days`)
  })();
0 голосов
/ 14 мая 2019

Существует много ответов о том, как получить разницу между двумя датами в днях , например this .

Ваш код кажется чрезмерно запутанным.Предполагая, что введенные даты имеют формат, например 2019-05-10, и вы используете встроенный синтаксический анализатор, вы можете работать в формате UTC и избежать проблем с переходом на летнее время.

Просто проверьте разницу в днях,если это 0 или меньше, верните ноль.В противном случае верните разницу.Например,

var dates = ['2019-01-01','2019-05-10','2019-05-20'];

var counters = dates.map(date => {
  let diffDays = (new Date(date) - new Date().setUTCHours(0,0,0,0))/8.64e7;
  return diffDays > 0? diffDays : 0;
});

console.log(counters)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...