22.11.2014, 14:07
|
Новичок на форуме
|
|
Регистрация: 18.08.2010
Сообщений: 8
|
|
разница между датами в месяцах
Здравствуйте. Такую разницу - в днях я умею.
Но как точно определить, как на ПХП, сколько прошло месяцев (у меня речь идет про дни рождения) так что тут нужно точно знать, был 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);
|
|
22.11.2014, 14:25
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
|
|
22.11.2014, 14:29
|
Новичок на форуме
|
|
Регистрация: 18.08.2010
Сообщений: 8
|
|
неверно работает, хоть:
var d = 23;
var m = 11;
var y = 1987;
хоть
var d = 21;
var m = 11;
var y = 1987;
пишет 27 возраст (сегодня 22.11)
|
|
22.11.2014, 14:29
|
Новичок на форуме
|
|
Регистрация: 18.08.2010
Сообщений: 8
|
|
и мне нужно именно кол-во месяцев. т.е. детский возраст считаю, нужно в месяцах
и не хочется аякс запрос в php делать в этом месте. было бы удобно если прямо на js или jquery
|
|
22.11.2014, 14:33
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
mailmoney,
вы точно по ссылке смотрите ?
|
|
22.11.2014, 14:38
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
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 день
|
|
22.11.2014, 14:46
|
Новичок на форуме
|
|
Регистрация: 18.08.2010
Сообщений: 8
|
|
да вроде нормально считает. не знаю как с феврелем, нет особо времени проверять, надеюсь что нормально. кому нужно кол-во месяцев, код особо не изменился:
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]
};
спасибо!
|
|
|
|