Я использую этот скрипт, чтобы начать временной интервал с заданной метки времени.
function startCounter (el, myStartTimestamp) {
var startTimestamp = parseInt(myStartTimestamp);
setInterval(function() {
startTimestamp++;
var timeStampMoment = moment.unix(startTimestamp);
var
years = timeStampMoment.get('years'),
months = timeStampMoment.get('month'),
weeks = timeStampMoment.get('week'),
days = timeStampMoment.get('day'),
hours = timeStampMoment.get('hour'),
minutes = timeStampMoment.get('minute'),
seconds = timeStampMoment.get('second'),
arr = [];
if (years > 0) {
arr.push(years == 1 ? '1 years ' : years + ' years');
}
if (months > 0) {
arr.push(months == 1 ? '1 month ' : months + ' months');
}
if (weeks > 0) {
arr.push(weeks == 1 ? '1 week ' : weeks + ' weeks');
}
if (days > 0) {
arr.push(days == 1 ? '1 day ' : days + ' days');
}
if (hours > 0) {
arr.push(hours == 1 ? '1 hr ' : hours + ' hrs');
}
if (minutes > 0) {
arr.push(minutes > 1 ? minutes + ' mins' : minutes + ' min');
}
if (seconds > 0) {
arr.push(seconds > 1 ? seconds + ' secs' : seconds + ' sec');
}
el.html(arr.join(' '));
}, 1000);
}
Теперь я хочу включить месяцы и годы тоже. Но как мне это сделать, поскольку общее количество дней в месяце может варьироваться?
Я обновил вопрос с помощью решения moment.js, но оно не совсем точное.
Эта отметка времени 1390896484 дает такой результат: 2014 лет 5 недель 2 дня 9 часов 10 минут 46 секунд (с добавлением нескольких секунд). Что мне не хватает?
Временная метка равна 01/28/14 в 8:08:04 утра UTC, поэтому я хотел бы, чтобы на выходе было написано «2 недели 3 дня», за которым следует количество «часов, минут и секунд».