Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   расчет возраста (https://javascript.ru/forum/misc/1242-raschet-vozrasta.html)

nameivan 24.05.2008 09:35

расчет возраста
 
Есть 2 поля, в одно из которых вводится текущая дата при помощи сприпта JS в формате 01-01-2008. Во второе поле вводим дату сами тоже в формате 01-01-2008. Необходимо расчитать сколько лет между датами. Подскажите скрипт пожалуйста.

scuter 24.05.2008 14:24

надо подробить дату через функцию кажется она split называется,
потом вычесть из одного числа другое eval-ом.
вот и всё и у тебя получается возраст.

nameivan 24.05.2008 14:37

спасибо,
подскажите пожалуйста
var DTR = document.form1.textfield.value - получаем значение поля, а как применить метод split?

не силен я в js.

scuter 24.05.2008 14:58

ну примерно так.
var udate = document.getElementById('id').value;
  var ddate = document.getElementById('id').value;
  udate = udate.split('-');
  ddate = ddate.split('-');
  udate = udate[2];
  ddate = ddate[2];
  numer = eval(ddate+'-'+udate);

nameivan 24.05.2008 16:02

что то не срабатывает. результат NaN

Андрей Параничев 24.05.2008 16:17

Если бы у вас даты были в понятном для javascript формате можно было бы воспользоваться элегантным решением.
var date1 = '01/01/1988';
var date2 = '01/01/2008';
var date  = new Date();

date.setTime(Date.parse(date1));
var year1 = date.getFullYear();

date.setTime(Date.parse(date2));
var year2 = date.getFullYear();

var age = year2 - year1;
alert('Your age: '+ age);

nameivan 24.05.2008 16:25

понятный для js это через "/" ?

Андрей Параничев 24.05.2008 16:32

Получается, что да. Там написано, что Date.parse() может парсить даты в формате "12-11-2008", но на практике new Date() возвращает invalid Date.

nameivan 24.05.2008 17:06

понятно, спасибо всем кто помог в решении данного вопроса

vasa_c 24.05.2008 21:53

Цитата:

numer = eval(ddate+'-'+udate);
Неподражаемо!

Извините, что вмешался.

scuter 26.05.2008 00:45

Цитата:

Сообщение от vasa_c (Сообщение 2605)
Неподражаемо!

Извините, что вмешался.

да ладно тебе, пишу же в слепую,
поэтому надо что бы сработало почти 100 пудова.

Snipe 02.06.2008 17:03

Дак можно разбить сплитом, а потом объекту Data скормить, чтоб он посчитал.

Формат ввода такой:
new Date(yr_num, mo_num, day_num[,hr_num, min_num, sec_num, ms_num])

siryouzheg 30.05.2014 15:52

Здесь не учтено следующее:
Например

var date1 = '01/06/1988';
var date2 = '01/01/2008';
var date  = new Date();

date.setTime(Date.parse(date1));
var year1 = date.getFullYear();

date.setTime(Date.parse(date2));
var year2 = date.getFullYear();

var age = year2 - year1;
alert('Your age: '+ age); // ответ 10, а на деле 9.5 лет


Надо учесть месяц и так же день месяца

date.setTime(Date.parse(date1));
var year1 = date.getFullYear(), month1 = date.getMonth(), day1 = date.getDate();

date.setTime(Date.parse(date2));
var year2 = date.getFullYear(), month2 = date.getMonth(), day2 = date.getDate();

var age = year2 - year1;
if ((month1 > month2) || // месяц рождения еще не наступил
    ((month1 == month2) && (day1 > day2))) { // месяц наступил, но дата еще на подошла
     age --; // уменьшим возраст в полных лет
}

alert('Your age: '+ age); // ответ 9 ПОЛНЫХ лет

рони 30.05.2014 17:19

возраст количество полных лет на текущую дату
 
:write: тема конечно old
Цитата:

Сообщение от siryouzheg
// ответ 10, а на деле 9.5 лет

Цитата:

Сообщение от siryouzheg
// ответ 9 ПОЛНЫХ лет

ой а у меня больше получилось )))
function yearsOld(c, b) {  //если b неуказывать расчитает возраст кол-во полных лет на текущую дату
    var a = new Date;
    a.setTime(Date.parse(c));
    var d = a.getFullYear(),
        e = a.getMonth(),
        f = a.getDate();
    b ? a.setTime(Date.parse(b)) : a = new Date;
    return a.getFullYear() - d - (0 > (a.getMonth() - e || a.getDate() - f))
};
var date1 = "01/06/1988",
    date2 = "01/01/2008";

alert(yearsOld(date1, date2));

http://javascript.ru/forum/misc/1280...ozrasta-3.html


Часовой пояс GMT +3, время: 06:39.