Расчет возраста
Добрый вечер, такая проблема, произвожу расчет возраста посетителя следующим скриптом:
<SCRIPT Language="JavaScript"> <!-- hide from old browsers var today = new Date() if ([xfvalue_data] && [xfvalue_mec] && [xfvalue_god] != "") { var targetDate = new Date("[xfvalue_data]/[xfvalue_mec]/[xfvalue_god]") var timeAfterTarget = Math.floor(( today.getTime() - targetDate.getTime() ) / 86400000) var msg = parseInt(timeAfterTarget/365); document.write(msg); } else { var msg=""; document.write(msg); } //--> </SCRIPT> [xfvalue_data] && [xfvalue_mec] && [xfvalue_god] это переменные, из выпадающего списка юзер выбирает необходимые значения....вбиваю свои данные 24/8/1990 на сайте скрипт выводит результат расчета 18 лет.....на могу найти причину почему на 2 года ошибается.... Прошу помощи, заранее спасибо! |
Tryman, как вариант:
- переводи даты в числа формата ГГГГММДД - просто вычисляй их разность - дели на 10000 - отбрасывай дробную часть |
xfvalue_god=1990; alert(new Date().getFullYear()-xfvalue_god) Надмозги, лол.) :lol: |
Aetae, пример:
сегодня 03.11.2010 родился 10.09.2009 по-твоему человеку 1 год. Что не верно...:nono: |
Цитата:
Но да, признаю, ступил.) |
Tryman,
Поменяйте месяц и дату местами тут var targetDate = new Date("[xfvalue_data]/[xfvalue_mec]/[xfvalue_god]") |
Не, всё равно не точно будет ибо не в каждом году 365 дней.
В голову теперь только всякие надмозги и лезут.=\ d=24;m=7;y=1990; // и надо помнить, что месяца считаются 0-11, а не 1-12) var t=new Date();t=[t.getMonth(),t.getDate(),t.getFullYear()]; alert(t[2]-y-(t[0]==m?t[1]<d:t[0]<m)) Или ещё более извращённый: d=24;m=7;y=1990; // и надо помнить, что месяца считаются 0-11, а не 1-12) var t=new Date(); alert( t.getFullYear()-y-((t.getMonth()-m||t.getDate()-d)<0) ) |
Цитата:
Т.ч. отбрось сомнения и просто используй. |
Цитата:
Цитата:
|
рони,
Без обид, но выкинь свой говнокод за 10 мин наваял var day = 24; var month = 8; var year = 1990; var now = new Date().getTime(); var birsday = Date.UTC(year,month-1,day); var result = new Date(); result.setTime(now-birsday); alert(result.getFullYear() - 1970) alert(result.getMonth()) alert(result.getDay()) |
Часовой пояс GMT +3, время: 17:45. |