Технически то, что у вас есть, правильно. Однако это соединение if
является кошмаром: совсем не легко понять, что оно делает, или работает ли оно правильно, без мыслей.
Возможно, вы захотите предварительно рассчитать все значения недель / дней / часов / и т. Д., А затем использовать их, чтобы сделать ваш код более читабельным: для примера посмотрите мой ответ .
В вашем случае вы бы сделали:
var weeks = Math.round(lapsedTime / 604800);
var days = Math.round(lapsedTime / 86400);
// etc for the other quantities
if (weeks >= 1) {
return weeks + " weeks";
}
else if (days >= 1) {
return days + " days";
}
// etc
Я думаю, вы согласитесь, что это гораздо проще понять и проверить на правильность.
Редактировать: При сканировании вашего вопроса на предмет очевидных проблем мне удалось пропустить ошибки, на которые указывают все остальные. Я думаю, это говорит: а) я неаккуратный читатель, б) действительно трудно проверить, что такое if
. : -)