Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.03.2014, 21:16
Интересующийся
Отправить личное сообщение для greencard Посмотреть профиль Найти все сообщения от greencard
 
Регистрация: 04.07.2013
Сообщений: 18

Неправильный подсчет времени с рождения
Здравствуйте, есть скрипт который подсчитывает дату с дня рождения.
но он неверно делает подсчеты.
день на один больше, время не +2 а +4 (для проверки выбиралась сегодняшняя дата)
вот сам скрипт

var yearLabel;
var monthLabel;
var dayLabel;
var hourLabel;
var minLabel;

var yearLabels = new Array(' год ', ' года', ' лет ');
var monthLabels = new Array(' месяц ', ' месяцы ', ' месяцев ');
var dayLabels = new Array(' день ', ' дня ', ' дней ');
var hourLabels = new Array(' час ', ' часы ', ' часов ');
var minLabels = new Array(' минута ', ' минуты ', ' минут ');

var yearGap = 1970;

function processRequest() {
    // get elements to fill
    var nameEl = document.getElementById('name');
    var birthDateEl = document.getElementById('birthDate');
    var timeFromBirthDateEl = document.getElementById('timeFromBirthDate');

    //fill user name
    nameEl.innerHTML += window.opener.lastName + ' ' +
        window.opener.firstName + ' ' +
        window.opener.patronymic;

    //calculate time from birth date
    var birthDate = new Date(window.opener.year, window.opener.month, window.opener.day);
    var diff = new Date(new Date() - birthDate);

    console.log()
    fillLabels((diff.getFullYear() - yearGap), (diff.getMonth() + 1), diff.getDate(), diff.getHours(), diff.getMinutes());

    //fill user's birth date
    birthDateEl.innerHTML += birthDate.getFullYear() + '/' + (birthDate.getMonth() + 1) + '/' + birthDate.getDate();

    //fill date difference
    timeFromBirthDateEl.innerHTML += (diff.getFullYear() - yearGap) + yearLabel +
        diff.getMonth() + monthLabel +
        diff.getDate() + dayLabel +
        diff.getHours() + hourLabel +
        diff.getMinutes() + minLabel;
}

function fillLabels(yearDiff, monthDiff, dayDiff, hourDiff, minuteDiff) {
    yearLabel = yearLabels[getSuffixIndex(yearDiff)];
    monthLabel = monthLabels[getSuffixIndex(monthDiff)];
    dayLabel = dayLabels[getSuffixIndex(dayDiff)];
    hourLabel = hourLabels[getSuffixIndex(hourDiff)];
    minLabel = minLabels[getSuffixIndex(minuteDiff)];
}

function getSuffixIndex(num) {
    if (num == 1) {
        return 0
    }
    else if (num >= 2 && num <= 4) {
        return 1
    }
    else {
        return 2
    }
}

window.onload = processRequest;

Последний раз редактировалось greencard, 10.03.2014 в 21:20.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамичный подсчет времени afterman Общие вопросы Javascript 46 05.01.2016 12:46
Работа с jasmine подсчет времени выполнения теста voice Библиотеки/Тулкиты/Фреймворки 2 26.03.2013 17:47
вывод времени php + javascript TTongorovortoto Ваши сайты и скрипты 2 29.10.2011 00:11
В зависимости от локального времени меняется задний фон Tchort Events/DOM/Window 3 09.08.2011 18:21
Обратный отсчет времени tenorica Общие вопросы Javascript 2 19.04.2011 23:30