расчет возраста
Есть 2 поля, в одно из которых вводится текущая дата при помощи сприпта JS в формате 01-01-2008. Во второе поле вводим дату сами тоже в формате 01-01-2008. Необходимо расчитать сколько лет между датами. Подскажите скрипт пожалуйста.
|
надо подробить дату через функцию кажется она split называется,
потом вычесть из одного числа другое eval-ом. вот и всё и у тебя получается возраст. |
спасибо,
подскажите пожалуйста var DTR = document.form1.textfield.value - получаем значение поля, а как применить метод split? не силен я в js. |
ну примерно так.
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);
|
что то не срабатывает. результат NaN
|
Если бы у вас даты были в понятном для 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);
|
понятный для js это через "/" ?
|
Получается, что да. Там написано, что Date.parse() может парсить даты в формате "12-11-2008", но на практике new Date() возвращает invalid Date.
|
понятно, спасибо всем кто помог в решении данного вопроса
|
Цитата:
Извините, что вмешался. |
Цитата:
поэтому надо что бы сработало почти 100 пудова. |
Дак можно разбить сплитом, а потом объекту Data скормить, чтоб он посчитал.
Формат ввода такой: new Date(yr_num, mo_num, day_num[,hr_num, min_num, sec_num, ms_num]) |
Здесь не учтено следующее:
Например
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 ПОЛНЫХ лет
|
возраст количество полных лет на текущую дату
:write: тема конечно old
Цитата:
Цитата:
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, время: 00:59. |