Я пытаюсь что-то наподобие ответа Андриса в этом посте: Преобразование секунд в дни, часы, минуты и секунды , но мне это нужно и в годах, месяцах и неделях.
я бегу это
getDateStrings() {
console.log(req_creation_date);
const today = new Date();
const creation_date = new Date('2020-01-06T20:24:00.000Z');
const creation_date_diff = Math.abs(today.getTime() - creation_date.getTime());
const creation_date_diffDays = Math.ceil((creation_date_diff / 1000));
console.log(creation_date_diffDays);
const creation_date_diffDays_days = Math.ceil((creation_date_diff / (1000 * 3600 * 24)) - 1);
console.log(creation_date_diffDays_days);
const y = Math.floor(creation_date_diffDays / (31536000));
const ms = Math.floor(creation_date_diffDays % (3600 * 24 * 7 * 4.34524 * 12) / 2592000);
const w = Math.floor(creation_date_diffDays % (3600 * 24 * 7 * 4.34524) / 604800);
const d = Math.floor(creation_date_diffDays % (3600 * 24 * 7) / 86400);
const h = Math.floor(creation_date_diffDays % (3600 * 24) / 3600);
const m = Math.floor(creation_date_diffDays % 3600 / 60);
const s = Math.floor(creation_date_diffDays % 60);
const yDisplay = y > 0 ? y + (y === 1 ? ' year, ' : ' years, ') : '';
const msDisplay = ms > 0 ? ms + (ms === 1 ? ' month, ' : ' months, ') : '';
const wDisplay = w > 0 ? w + (w === 1 ? ' week, ' : ' weeks, ') : '';
const dDisplay = d > 0 ? d + (d === 1 ? ' day, ' : ' days, ') : '';
const hDisplay = h > 0 ? h + (h === 1 ? ' hour, ' : ' hours, ') : '';
const mDisplay = m > 0 ? m + (m === 1 ? ' minute, ' : ' minutes, ') : '';
const sDisplay = s > 0 ? s + (s === 1 ? ' second ' : ' seconds') : '' ;
console.log(yDisplay, msDisplay, wDisplay, dDisplay + hDisplay + mDisplay + sDisplay);
}
60 дней прошло с 06-06-2020 до сегодняшнего дня.
Возвращается "2 месяца, 4 недели, 4 дня, 21 минута, 10 секунд", что неправильно, должно быть что-то вроде "2 месяца, 21 минута, 10 секунд"
Я не знаю, что я делаю неправильно, я пытаюсь также с января-15-2020. Прошло 51 день, но возвращается «1 месяц, 2 недели, 2 дня, 41 минута, 43 секунды», что в сумме составляет 46 дней, а не 51, как должно быть «1 месяц, 3 недели, 0 дней, 41 минута, 43 секунды "
большое спасибо!