расчет возраста
Есть 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, время: 06:39. |