Хочу рассказать Вам все о сайтах, что узнал сам за 15 лет.
Блог Виталия Жукова Vitalik.WS Свой сайт с нуля - легко!
Обо мне, как об авторе блога.
Подробнее
Vitalik.WSЗаметки → Как посчитать количество лет с определенной даты на PHP

Как посчитать количество лет с определенной даты на PHP
Заметка на тему: Уроки, PHP

Эта заметка не столько для меня, сколько для людей, которые хотят посчитать количество лет между какой-то датой и текущим днем при помощи языка PHP. Сам же я уже реализовал это в верхнем левом блоке, который автоматически выводит, сколько лет я уже занимаюсь разработкой в сфере создания сайтов.

За начальную дату я взял дату создания первого собственного домена второго уровня - 01.03.2009. Особо внимательные поймут, о каком домене идет речь =)

Задача понятна: нужно было просто рассчитать разницу между 01.03.2009 и текущей всегда меняющейся даты. И для этого я решил использовать представление даты в Unix TimeStamp, подробнее о котором вы можете узнать в описании конвертера Unix даты. После сведения даты в число остается только вычесть из большего числа меньшее (из числа текущей даты вычитаем число даты 01.03.2009) и перевести время из секунд в годы (обычная математика путем деления).

Так вот, перейдем к реализации. Дабы экономить место, у себя в коде я прописал все компактно одной строкой. Кто не хочет вникать, вот (только замените числа 3, 1 и 2009 на свой месяц, день и год соответственно):
echo floor((time()-mktime(0, 0, 0, 3, 1, 2009))/(60*60*24*365));


Я для тех, кто всетаки хочет понять, что именно написано в этой строке, я распишу все более подробно:
//задаем переменные
$month = 3; //месяц от 1 до 12
$day = 1; //день от 1 до 31
$year = 2009; //год
$hour = 0; //час от 0 до 23
$minute = 0; //минуты от 0 до 59
$second = 0; //секунды от 0 до 59
//часы, минуты и секунды указывать не обязательно, 
//поэтому у меня они равны 0, 0, 0 - что соответстует 12 часам ночи ровно
//(если, конечно, вам не нужна переделяная точность до часа, минуты, секунды)

//формируем unix-число нужной даты на основе заданных выше переменных
$get_past_time = mktime($hour, $minute, $second, $month, $day, $year);

//получаем unix-число текущей даты
$get_current_time = time();

//выполняем математику: вычитаем из $get_current_time число $get_past_time 
//и перегоняем полученный результат в секундах в годы
//(1 минута = 60 секунд, 1 час = 60 минут, 1 сутки = 24 часа, 1 год = 365 дней)
//на основе этого получается, что секунды нужно делить на 60*60*24*365
$math_years = ($get_current_time - $get_past_time)/(60*60*24*365);

//получаенное не целое число лет округляем в меньшую сторону,
//так как нам нужно знать полное количество лет
$final_years = floor($math_years);

//все, количество лет с отпределенной даты получено
//и находится в переменной $final_years - можно выводить
echo "Прошло уже более ".(int)$final_years." лет.";

Этот код аналогичен строке, что я написал выше. Разница только в том, что тут описано все детально и пошагово, а там все компактно и одной строкой.

Вот такая нехитрая математика и PHP.
Желаю всем удачи в экспериментах над датами в PHP =)
Если есть вопросы, то пишите их в комментариях.

Все комментарии к заметке "Как посчитать количество лет с определенной даты на PHP"

  • Комментариев еще нет.
    Оставьте свой комментарий первым!
Написать свой комментарий:
Отправить
ВНИМАНИЕ! Пожалуйста НЕ пишите в комментариях рекламу, оскорбления, бессмыслицу и прочие проявления интернет-нечисти, так как эти сообщения всеравно не будут опубликованы. Пишите исключительно по теме и ваш комментарий обязательно будет опубликован, а возможно и прокомментирован.
 Подписывайтесь на мой блог
Хотите первыми узнавать о самом интересном? Тогда подпишитесь на рассылку новостей.
Подписаться
Подписавшись на рассылку, Вы всегда будете в первую очередь узнавать о самой важной и полезной для блоггеров и веб-мастеров информации.