PHP уроки для начинающих

PHP уроки

  • Главная
  • PHP с чего начать?
  • Уроки PHP
  • Массивы
  • Функции
  • MySQL
  • Форум
Меню

  • PHP - с чего начать?
  • Уроки PHP
  • Функции
  • Массивы
  • Denwer
  • MySQL
  • Информация
  • Dreamweaver уроки
  • Галерея
  • Как здесь качать?
  • КНИГИ

Связаны

Что нового?
Как создать свой сайт? Урок третий.
Загрузка файлов
Регистрация PHP
Как создать свой сайт? Урок второй.
Как создать свой сайт?
Размер изображения
Index.php

Новости на email
Подпишись на новости.
Уроки PHP на email.


Имя(login):

*Ваш email:


Календарь
Май (2012)
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
28293031   

ИГРЫ Компьютерные, настольные, детские конструкторы, карточные игры, головоломки.
on-books.ru
 
Комментарии
Текст
сообщениясбрасы
ваются все
настройки
мозилы+удаляютс
я в...
"Сейчас
откройте
страничку в
браузере. Для
этого щёлкни...
Спасибо за
уроки
спосиба для
помщ
Читать учитесь.
 
TOP5-уроки
1.  Привет, МИР! - 62109
2.  Метод GET - 35587
3.  Как вставить картинку в скрипт PHP. - 33564
4.  Как настроить Adobe Dreamweaver для работы с сайтом. - 29802
5.  Метод POST - 29176

Узнать возраст человека по дате рождения

Главная » Уроки PHP » Узнать возраст человека по дате рождения

PHP урок № 283

Вычислить возраст пользователя.

Письмо:

Здравствуйте. Предлагаю еще интересный урок. Имеется дата рождения: день, месяц, год. Нужно узнать, сколько лет человеку, естественно, включая текущую дату.
Дано:
$a='01'; $b='05'; $c='1994';
Результат: 15

Ответ:

В PHP есть встроенные функции для работы с датой и временем с двумя из них мы сейчас и познакомимся. Подробную информацию о работе этих функций и многих других, можно получить на сайтах представляющих мануал по всем функциям и объектам PHP. Представление их сейчас, выходит за рамки данного урока.
Есть такое понятие в программирование временная отметка Unix. Что это значит?
Во временной отметки Unix время отображается или представлено (это уж как вам угодно), как количество секунд прошедших с начала эпохи Unix. Это значит количество секунд с 1.1.1970 года. Посмотреть на это можно с помощью функции time().

Листинг № 1 - Функция time() возвращает временную отметку Unix

<?php

  
echo time(); // вывела 1266100644

?>
Сейчас на очереди функция mktime() - эта функция возвращает количество секунд прошедших с начала эпохи Unix, т.е. с 1.1.1970, по число введённое в качестве аргументов функции. Синтаксис этой функции описан ниже.
mktime
(PHP 3, PHP 4)

mktime - получает UNIX timestamp даты.

Описание
int mktime (int hour, int minute, int second, int month, int day, int year [, int is_dst])

is_dst может быть установлен в 1, если это период с поправкой на летнее время, в 0 - если нет, или -1 (по умолчанию), если не известно, находится данное время в периоде с поправкой на летнее время или нет. Если это не известно, PHP пытается определить это сам. Это может привести к неожиданным (но не некорректным) результатам.

phpclub
Аргументы имеющиеся в функции достаточно понятно описаны. Это есть:
  • hour - часы (0-23),
  • minute - минуты (0-59),
  • second - секунды (0-59),
  • month - месяцы (1-12),
  • day - дни (1-31),
  • year - может быть двух или 4-х значным значением. Со значениями 0-69, отображающимися как 2000-2069, и 70-99 - как 1970-1999 (в системах, где time_t это 32-битное знаковое целое, как в большинстве современных систем, правильным диапазоном year будет примерно 1902-2037).

Листинг № 2 - Пример работы функции mktime() в работе

<?php

  
echo mktime(0,0,0,2,14,2010); // выведет на монитор разницу в секундах между 00:00:00 01.01.1970 и 00:00:00 14.02.2010

?>
Заметьте в этой функции месяц идёт первым, потом идёт день и год.
Думаю вы уже догадались по какому алгоритму будет реализован данный урок. Мы в первом листинге узнали сколько всего секунд прошло с начала эпохи unix, во втором листинге узнали сколько секунд прошло до даты рождения пользователя. Теперь вычтем результат второго листинга из результата первого, получим разницу в секундах между двумя датами. Эту разницу надо пересчитать в года. В году у нас 365 суток, в сутках 24 часа, в часе 60 минут и наконец в 1 минуте 60 секунд.
Следовательно в году 31536000 секунд.
Значит разницу делим на 31536000 секунд равно возраст! Функция explode делит строку по разделителю, представленному в первом аргументе. В данном случаи это точка. Проще сказать отделяет целую часть от дробной и заносит в переменную $a. Как это может выглядеть представлено ниже.

Листинг № 3 - Вычисляем возраст пользователя зная его дату рождения.

<?php
    $m 
= 10;
    
$d = 29;
    
$y = 85;

    
$r = mktime(0, 0, 0, $m, $d, $y); 
    
$age = (time()-$r)/31536000;
    list(
$a) = explode(".",$age);  
    echo  
$a; 
?>

Урок закончен.

SETTER © LPHP.RU
Администрация сайта
14.02.2010 01:17:42

Обсудить на форуме.

Рекомендованные уроки этого раздела:
  • Как вставить Flash-кнопку в страницу сайта?
  • Как заменить только первое вхождение (слова, знака) в строке?
  • Как убрать все пробелы из строки.
  • PHP фотогалерея (часть 3)

НАПИШИТЕ СВОЙ КОММЕНТАРИЙ

Имя:

Введите цифры с картинки:

КОММЕНТАРИИ

Имя: Алексей К     Время: 10.08.2010 10:06:08
  • echo (date("Y")-$y-((intval($m.$d)-intval(date("m").date("d"))>0)?1:0)); так лучше
  • Имя: SETTER     Время: 10.08.2010 20:44:33
  • Только год нужно писать полностью. Такая запись например 85 - не сработает.
  • Имя: павел     Время: 05.10.2011 17:36:22
  • функции работаю неправильно есть ошибки
  • Имя: SETTER     Время: 05.10.2011 18:42:09
  • Предъявлять нужно конкретно, с указанием на ошибки, а не так. У вас есть ошибки, разбирайтесь со своим кодом, в данном уроке ошибок нет, пока не доказано обратное. И пользовательских функций в этом примере вообще нет. Поэтому если у вас не работает функция, то это к создателям языка PHP вопросы, а не сюда.
  • Имя: Hevel     Время: 13.10.2011 11:16:05
  • Если человек родился в 1940 году, то не правильно идет подсчет.
  • Имя: SETTER     Время: 13.10.2011 12:16:05
  • Всё правильно, просто год нужно указывать из 4-х цифр.
  • Имя: Дмитрий     Время: 07.02.2012 02:00:10
  • А если год високосный?) Так что тут могут быть расхождения. Конечно для того, что бы произошел сдвиг хотя бы на 1 год в результате выполнения функции, в реальной жизни придется прожить о-го-го(столько не живут), но всё же.
  • Имя: fan2mas     Время: 20.03.2012 12:15:55
  • если год высокосный и день рождения вчера программа не сработает

  • Copyright © 2009-2012 LPHP.RU