сколько лет

syst3m

Новичок
сколько лет

есть 2 даты

1) 25.12.1987 (день,месяц,год)
2) 06.09.2005 (сегодня)

нужно узнать сколько лет человеку. просто отнять год нельзя, нужно учесть такую вещь как был ли день рождения в этом году или нет.
 

Vladson

Сильнобухер
учесть = сравнить месяц + (если необходимо то и число)
 

dorfey

Guest
1) 25.12.1987 (день,месяц,год)
2) 06.09.2005 (сегодня)
1. скока лет? 2005-1987
2. был ли ДР? 09 - 12 # если число положительное смотрим дни, иначе ДР был
06 - 25 # если число отрицательное, ДР был

зы: помоему у мна едет крыша :D
 

dvp

Новичок
Е сли дата в timestamp, то просто вычесть:

PHP:
$date = mktime(0, 0, 0, 12, 25, 1987);
$life_time = time() - $date;
echo date('Y', $life_time);
-~{}~ 06.09.05 19:03:

Хотя похоже я не совсем прав - так не верно учитываются високосные годы, хотя ошибка максимум на 1 день
 

Anarki

Новичок
Автор оригинала: dvp
Е сли дата в timestamp, то просто вычесть:

PHP:
$date = mktime(0, 0, 0, 12, 25, 1987);
$life_time = time() - $date;
echo date('Y', $life_time);
-~{}~ 06.09.05 19:03:

Хотя похоже я не совсем прав - так не верно учитываются високосные годы, хотя ошибка максимум на 1 день
C датами раннее 1970 года работать не будет.
 

syst3m

Новичок
да я уже всё понял... создал тему, хорошенько не обдумав %))
 

for_i_0

Новичок
Автор оригинала: dvp
На сколько я знаю - не будет работать только в Windows
timestamp - Стандарт времени который принят в UNIX системах. Отсюда, unix -timestamp принимает количество секнуд с 1 января 1970 г по 3000 г. Тоесть получить данные за более ранние периоды используя timestamp невозможно.

А если задача того требует придется переобразовать дату в (JDC)
 

SiMM

Новичок
> Тоесть получить данные за более ранние периоды используя timestamp невозможно.
[m]date[/m]

> Отсюда, unix -timestamp принимает количество секнуд с 1 января 1970 г по 3000 г.
При помощи четырёх байт можно "адресовать" каждую секунду в диапазоне порядка 137 лет - откуда там целое тысячелетие?
 

for_i_0

Новичок
SiMM
Привожу цитату из книги (PHP5 Наиболее полное руководство, Глава 22 Работа с датами и временем стр. 417):

Вы могли бы подумать, что для этих целей можно использовать и фнукцию maketime() - сформировать timestamp, а затем работать с ним. К сожалению, это не так . Вспомните, что timestamp содержит время в секундах, начиная с 1 января 1970 года. Получить данные за более ранние периодывремени(или, наоборот, за 3000-й год) нельзя.
Авторы говоря о цлях имели ввиду вопрос, который задал syst3m.
 

SiMM

Новичок
> Привожу цитату из книги (PHP5 Наиболее полное руководство, Глава 22 Работа с датами и временем стр. 417):
Подумаешь авторитет какой. Или ты считаешь авторов книг истиной в последней инстанции? Да хотя бы экспериментально попробуй получить дату с 2999 годом. Если удасться - это будет значить лишь о том, что верхняя граница - далеко не 3000й год.
 
Сверху