Я работаю над инкубатором времени / даты - и пытаюсь точно настроить текущую базу кода - рекурсивную функцию, - но также включаю обработку множественного числа. Поэтому вместо 1 минуты - 1 минута.
Я также хочу улучшить функции const utils для тонкой настройки - добавить переменную для обработки единиц измерения.
export const timeRemaining = (endDate, unit) => {
return moment(endDate).diff(moment(), unit);
};
export const timeRan = (startDate, unit) => {
return moment().diff(moment(startDate), unit);
};
export const totalTime = (date1, date2, unit) => {
return moment(date2).diff(moment(date1), unit);
};
текущая кодовая база
getCampaignProgress = (startTime, endTime) => {
if (!this.hasCampaignStarted(startTime, 'days')) {
return 'Start in ' + timeRemaining(startTime, 'days') + ' days';
}
if (this.hasCampaignFinished(endTime, 'days')) {
return 'Finished ' + Math.abs(timeRemaining(endTime, 'days')) + ' days ago';
}
//ends today
if (timeRemaining(endTime, 'days') === 0) {
if (timeRan(startTime, 'hours') < 0) {
return 'Start in ' +
Math.abs(timeRan(startTime, 'hours')) +
' hours';
}
if (timeRemaining(endTime, 'hours') < 0) {
return (
'Finished ' +
Math.abs(timeRemaining(endTime, 'hours')) +
' hours ago'
);
} else {
if (timeRemaining(endTime, 'hours') === 0) {
if (timeRan(startTime, 'minutes') < 0) {
return (
'Start in ' +
Math.abs(timeRan(startTime, 'minutes')) +
' mins'
);
}
if (timeRemaining(endTime, 'minutes') < 0) {
return (
'Finished ' +
Math.abs(timeRemaining(endTime, 'minutes')) +
' mins ago'
);
} else {
if (timeRemaining(endTime, 'minutes') === 0) {
if (timeRan(startTime, 'seconds') < 0) {
return (
'Start in ' +
Math.abs(timeRan(startTime, 'seconds')) +
' seconds'
);
}
if (timeRemaining(endTime, 'seconds') < 0) {
return (
'Finished ' +
Math.abs(timeRemaining(endTime, 'seconds')) +
' seconds ago'
);
} else {
return (
'Seconds remaining ' +
timeRemaining(endTime, 'seconds')
);
}
}
return 'Minutes remaining ' + timeRemaining(endTime, 'minutes');
}
}
return 'Hours remaining ' + timeRemaining(endTime, 'hours');
}
}
return 'Days remaining ' + timeRemaining(endTime, 'days');
};