rgl,
Спасибо! |
рони,
function passed(d, m, g, dd, mm, gg) { //устанавливаем начальное время и будушее var a = new Date(g, m - 1, d, 0, 0, 0, 0),b = new Date(gg, mm-1, dd, 0, 0, 0, 0); //увеличивая начальное время на 1 месяц вперёд //подсчитываем количество полных месяцев до сегодня //если дата превышает число дней следующего месяца //то месяцем считаем весь следующий месяц //5 января + 1 месяц = 5 февраля, но 31 января + 1 месяц = 28/29 февраля for (m = 0;; m++) { g = new Date(a.getFullYear(), a.getMonth() + 2, 0); g.getDate() > d && g.setDate(d); if (g > b) break; a = g } d = b - a;//оставшееся время за последний неполный месяц, если будет d = Math.round(d/864E5);//количество полных дней в этом времени g = Math.floor(m/12);//сколько полных лет в подсчитанных месяцах m = m % 12;//оставшиеся месяцы от полных лет return [g, m, d] }; alert(passed('29','4','2013','28','11','2013'));в апреле и ноябре по 30 дней, а в результате получаем 6 месяцев 30 дней… |
Octane,
c 29 апреля по 29 ноября == 7 месяцев => 28 ноября == 6 месяцев 30 дней то есть остался один день до полного месяца. важны даты а не количества дней в месяцах -- если в следующем месяце такой даты нет например 31-- берётся последний день месяца. 31 мая по 30 июня == 1 месяц 30 мая по 30 июня тоже будет 1 месяц -- вот такой парадокс. |
Помогите с похожей проблемой, есть дата ( в формате год, месяц, число, час, минуты, секунды),и текущее время, надо вывести сколько прошло лет, месяцев, дней, часов, минут, секунд за этот период,
не получается скрыть значения лет, месяцев, дней, часов и минут если их значение меньше единицы, и второе как сделать чтобы правильно показывало окончания слов, 1 год 2,3,4 года, 5-20 лет, 21 год и так везде год, месяц, день, час, минута, секунда? |
m~r.Nemo,
на форуме всё это есть надо только поискать или в раздел работа |
Рони, мож подкинешь сылочку на тему, где искать?
|
|
Часовой пояс GMT +3, время: 22:41. |