Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.11.2014, 14:07
Новичок на форуме
Отправить личное сообщение для mailmoney Посмотреть профиль Найти все сообщения от mailmoney
 
Регистрация: 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);
Ответить с цитированием
  #2 (permalink)  
Старый 22.11.2014, 14:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

mailmoney,
Расчет возраста
Ответить с цитированием
  #3 (permalink)  
Старый 22.11.2014, 14:29
Новичок на форуме
Отправить личное сообщение для mailmoney Посмотреть профиль Найти все сообщения от mailmoney
 
Регистрация: 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)
Ответить с цитированием
  #4 (permalink)  
Старый 22.11.2014, 14:29
Новичок на форуме
Отправить личное сообщение для mailmoney Посмотреть профиль Найти все сообщения от mailmoney
 
Регистрация: 18.08.2010
Сообщений: 8

и мне нужно именно кол-во месяцев. т.е. детский возраст считаю, нужно в месяцах
и не хочется аякс запрос в php делать в этом месте. было бы удобно если прямо на js или jquery
Ответить с цитированием
  #5 (permalink)  
Старый 22.11.2014, 14:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

mailmoney,
вы точно по ссылке смотрите ?
Ответить с цитированием
  #6 (permalink)  
Старый 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 день
Ответить с цитированием
  #7 (permalink)  
Старый 22.11.2014, 14:46
Новичок на форуме
Отправить личное сообщение для mailmoney Посмотреть профиль Найти все сообщения от mailmoney
 
Регистрация: 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]
 };



спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Промежуток времени между датами Octane Общие вопросы Javascript 16 02.12.2014 02:00
разница между датами liarbur Общие вопросы Javascript 6 04.04.2013 15:20
Разница между датами при onchange Ptichka Events/DOM/Window 0 06.04.2012 18:10
Разница между датами Amour Общие вопросы Javascript 4 29.03.2011 21:01
Разница между датами в днях autosoft Общие вопросы Javascript 2 01.06.2010 19:23