разница между датами в месяцах
Здравствуйте. Такую разницу - в днях я умею.
Но как точно определить, как на ПХП, сколько прошло месяцев (у меня речь идет про дни рождения) так что тут нужно точно знать, был 30 дней в месяце или 31.. и т.д. Есть ли такое на javascript var date1=selectedDate.split('.') //Текущая дата var todayDate = new Date(); //Выбранная дата var currentDate = new Date(date1[2],(date1[1]-1),date1[0]); //Разница во времени var dateDifference = todayDate.getTime()-currentDate.getTime(); //Дата, созданная из остатка времени var remainsDate = new Date(dateDifference); var remainsSec = (parseInt(remainsDate / 1000)); var remainsFullDays = (parseInt(remainsSec / (24 * 60 * 60))); var secInLastDay = remainsSec - remainsFullDays * 24 * 3600; var remainsFullHours = (parseInt(secInLastDay / 3600)); var secInLastHour = secInLastDay - remainsFullHours * 3600; var remainsMinutes = (parseInt(secInLastHour / 60)); var lastSec = secInLastHour - remainsMinutes * 60; alert (remainsFullDays); |
|
неверно работает, хоть:
var d = 23; var m = 11; var y = 1987; хоть var d = 21; var m = 11; var y = 1987; пишет 27 возраст (сегодня 22.11) |
и мне нужно именно кол-во месяцев. т.е. детский возраст считаю, нужно в месяцах
и не хочется аякс запрос в php делать в этом месте. было бы удобно если прямо на js или jquery |
mailmoney,
вы точно по ссылке смотрите ? |
mailmoney,
function passed(b, c, a) { var d = new Date(a, c - 1, b, 0, 0, 0, 0), e = new Date; e.setHours(0, 0, 0, 0); for (c = 0;; c++) { a = new Date(d.getFullYear(), d.getMonth() + 2, 0); a.getDate() > b && a.setDate(b); if (a > e) break; d = a } b = Math.round((e - d) / 864E5); a = Math.floor(c / 12); return [a, c % 12, b] }; var d = 23; var m = 11; var y = 1987; alert(passed(d, m, y)); //26 лет 11 месяцев 30 дней var d = 21; var m = 11; var y = 1987; alert(passed(d, m, y)); //27 лет 0 месяцев 1 день |
да вроде нормально считает. не знаю как с феврелем, нет особо времени проверять, надеюсь что нормально. кому нужно кол-во месяцев, код особо не изменился:
function passed(b, c, a) { var d = new Date(a, c - 1, b, 0, 0, 0, 0), e = new Date; e.setHours(0, 0, 0, 0); for (c = 0;; c++) { a = new Date(d.getFullYear(), d.getMonth() + 2, 0); a.getDate() > b && a.setDate(b); if (a > e) break; d = a } b = Math.round((e - d) / 864E5); a = Math.floor(c / 12); return [a*12+c % 12] }; спасибо! |
Часовой пояс GMT +3, время: 21:45. |