Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.05.27;
Скачать: [xml.tar.bz2];

Вниз

Еще один вопрос по PHP :)   Найти похожие ветки 

 
SerJaNT ©   (2007-04-25 07:25) [0]

Есть три переменных:

$day = 3;
$month = 5;
$year = 1980;


Вопрос: как определить сколько прошло полных лет?


 
Думкин ©   (2007-04-25 07:29) [1]

Откуда и куда?


 
SerJaNT ©   (2007-04-25 07:30) [2]

> Откуда и куда?

от $day.$month.$year до сегодняшней даты.


 
Думкин ©   (2007-04-25 07:36) [3]

$firstdate = mktime(0,0,0,$day1,$month1,$year1);
$lastdate = time();

$between = floor(($lastdate - $firstdate)/(60*60*24*36?));

Или о каких полных годах речь?


 
homm ©   (2007-04-25 07:36) [4]

> Есть три переменных:
> Вопрос: как определить сколько прошло полных лет?

Летели кракодилы. Один зеленый, другой направо… (думаю дальше все знают)

По существу:

$tot_year := $cur_year-$year;
if ($month > $cur_mouth) {
 $tot_year--;
} else if (($month == $cur_mouth) && ($day > $cur_day))
 $tot_year--;


 
homm ©   (2007-04-25 07:37) [5]

> [3] Думкин ©   (25.04.07 07:36)
> $firstdate = mktime(0,0,0,$day1,$month1,$year1);
> $lastdate = time();
>
> $between = floor(($lastdate - $firstdate)/(60*60*24*36?));

А что такое 36?


 
SerJaNT ©   (2007-04-25 07:38) [6]

> $day = 3;
> $month = 5;
> $year = 1980;


В этих переменных хранятся день, месяц и год


 
Думкин ©   (2007-04-25 07:38) [7]

> homm ©   (25.04.07 07:37) [5]

Число дней в году. Вообще их там 365,25.... Или ему надо 365. А может 366?


 
homm ©   (2007-04-25 07:39) [8]

> Вообще их там 365,25.... Или ему надо 365. А может 366?

Вои именно по этому твой вариант и не подходит :) Хотя, мне он тоже первый пришел в голову.


 
Думкин ©   (2007-04-25 07:41) [9]

> homm ©   (25.04.07 07:39) [8]

А я не знаю, почему он не подходит.
Вот сколько прошло полных лет с вечера 29 февраля 1980 года по утро 1 марта 1981 года? Если по честному - то ни одного полного. Дело в том, как мы определимся в том, что считать за полный год. можно как у тебя, можно как у меня.


 
homm ©   (2007-04-25 07:45) [10]

> Дело в том, как мы определимся в том, что считать за полный год.

Разве сказав «по чесному» в своем примере, ты как раз не имел ввиду правильное определение? т.е. Что-бы число и месяц текущего года были не младше чем в искомом. Твой вариант это никак не учтет. Мой же не приведенном примере покажет именно 0.


 
Думкин ©   (2007-04-25 07:49) [11]

> homm ©   (25.04.07 07:45) [10]

Я ничего не имел в виду. Если там записать вместо вопроса 5,25 то чем у меня плохо?
И твой вариант покажет 1. Проверь.


 
homm ©   (2007-04-25 07:54) [12]

> Если там записать вместо вопроса 5,25

Где записать. Что такое 5,25?


> И твой вариант покажет 1.

Естаественно. Иначе бы для разности с сегоняшним числом он показывал бы -1.

Довольно уже, и так ты много глупостей сказал.


 
Думкин ©   (2007-04-25 08:05) [13]

> homm ©   (25.04.07 07:54) [12]

Ты споришь только ради того чтобы спорить. Если речть идет об астрономичских годах, то мой варинат с записью вместо вопроса того, что я указал - верен, твой ни разу.

Действительно довольно. :)


 
Думкин ©   (2007-04-25 08:06) [14]


> Мой же не приведенном примере покажет именно 0.



> > И твой вариант покажет 1.
> Естаественно.


В каком месте ты лукавишь? :))


 
homm ©   (2007-04-25 08:27) [15]

> Если речть идет об астрономичских годах

Речь идет о годах, как я понял, человеческих. Вот сядишь ты, к примеру, в тюрьму за пьянство на 3 года, и будешь там кричать что-бы тебя на 1 день раньше выпустили, т.к. по астрономическому календарю 3 года прошло, а тебя все равно нафиг пошлют :) и в бухгалтерии тебя нафиг пошлют, коли по человеческому (ей богу, не знаю как назвать) календарю чегонить на день просрочишь.


> В каком месте ты лукавишь? :))

вообще-то, я подумал что слова «И твой вариант покажет 1.» относятся к предложению «Если там записать вместо вопроса 5,25», которое я расшифровал как «Если посчитать от предъидущего года 25-го числа, 4-го месяца».

За [10] вообше извияюсь :) что-то меня бес попутал. «по хорошему» там как раз 1 год и пройдет, что и вернет мой вариант.


 
Думкин ©   (2007-04-25 08:33) [16]


> homm ©   (25.04.07 08:27) [15]

Ну а я понял, что астрономических. И что дальше? Я же ясно написал, что автор вопрос не конкретизировал. А я математик - а потому человек привередливый. :)

В тюрьму за пьянство мне не светит, не надо по себе судить о людях. Вам видимо светит, как и посадка еще куда. :)

Ну вот и ты подумал. Это хорошо. Значит надежда есть.

Суть в том, что твой вариант верен при одном подходе к проблеме, мой при другом подходе к проблеме.

5.25... это как замена для знака вопроса. 365.25 примерно.

А извиняться надо не за 10, а за 12. Но я не требую. :)


 
homm ©   (2007-04-25 08:42) [17]

> В тюрьму за пьянство мне не светит, не надо по себе судить
> о людях. Вам видимо светит

LOL. «Приговор вынесен гржданину (см мою анкету) за то что он с 17 декабря 2005 года ни разу не употреблял спиртного…»


> Суть в том, что твой вариант верен при одном подходе к проблеме,
> мой при другом подходе к проблеме.

Все-ж согласись, твой вариант мало связан с реальностью. Не разу не видел что-бы кому-то нужно было посчитать количество астронамических годов. Да и имхо, не 365,25 в них дней, ты же математик ;)


 
Knight ©   (2007-04-25 08:44) [18]

годов=год2-год1
если (годов>0) и (12*месяц2+день2)-(12*месяц1+день1)<0 то годов--


Осталось перевести в пхп :)


 
Knight ©   (2007-04-25 08:46) [19]

Шутка с ошибками :)


 
Думкин ©   (2007-04-25 08:48) [20]

> homm ©   (25.04.07 08:42) [17]

1. Закодировался? :о)

2. Я и не спорю. Действительно мало связан с обычным. Но я и поставил знак вопроса, чтобы человек задумался, и все-таки нашел в себе силы и конкретизировал вопрос. Я так часто делаю - вредный такой. Твой вариант тоже всплыл сразу. Но и еще тут вариант подкинули - прибавить некоторое вычислимое количество лет к изначальной дате и посмотреть позже окажемся или раньше сегодняшней даты.
Вариантов масса.

А про точно - я и написал
> 365.25 примерно.
Но число знаков можно подобрать, что итоговая погрешность все сгладит. Справочника под рукой нет.

На этом думаю, конфликт исчерпан?


 
homm ©   (2007-04-25 08:52) [21]

> Закодировался? :о)

Какого ты все-таки обо мне мнения :)


> годов=год2-год1
> если (годов>0) и (12*месяц2+день2)-(12*месяц1+день1)<0 то годов--

Выделеный момент попобдробнее, что он значит?


> Осталось перевести в пхп :)

В [4] смотрел, да?


 
Knight ©   (2007-04-25 08:55) [22]

> [21] homm ©   (25.04.07 08:52)

В выделеном фрагменте количество дней в месяцах с начала года... круто зашифровал, да7 :))))


 
homm ©   (2007-04-25 08:57) [23]

> [22] Knight ©   (25.04.07 08:55)
> В выделеном фрагменте количество дней в месяцах с начала
> года... круто зашифровал, да7 :))))

Отлично. 31 декабря 175 дней с начала года прошло, а 1 января уже 13 :)


 
Knight ©   (2007-04-25 09:02) [24]

> [23] homm ©   (25.04.07 08:57)

Не надо понимать идеи буквально.. они часто выводятся на лист так, как приходят в голову и часто приобретают очень забавную форму :)))


 
SerJaNT ©   (2007-04-25 09:39) [25]

Всем спасибо, остановлюсь, наверно, на этом варианте:

$iTimeStamp = (mktime() - 86400) - mktime(0, 0, 0, 03, 05, 1980);
$iDays = $iTimeStamp / 86400;
$iYears = floor($iDays / 365.25);
print $iYears; // сколько полных лет прожил человек


 
homm ©   (2007-04-25 10:13) [26]

> Всем спасибо, остановлюсь, наверно, на этом варианте:

Ну и пожалуста, только «сколько полных лет прожил человек» у тебя получиться не по паспорту, а по звездам :)


> Не надо понимать идеи буквально..

Дак объясни, как ее понимать, я же попросил. Я не докапываюсь, я хочу понять, что ты имел ввиду.


 
SerJaNT ©   (2007-04-25 10:33) [27]

> Ну и пожалуста, только «сколько полных лет прожил человек»
> у тебя получиться не по паспорту, а по звездам :)


Да, это я уже понял. Этот код, вроде, показывает верно:

$year_diff  = date("Y") - $year; // $year -- год
$month_diff = date("m") - $month; // $month -- месяц
$day_diff   = date("d") - $day; // $day -- день
if ($month_diff < 0) $year_diff--;
elseif (($month_diff==0) && ($day_diff < 0)) $year_diff--;
print $year_diff;


 
oldman ©   (2007-04-25 10:38) [28]

Например:
Сегодня 28 февраля 2005 года
Проверяем дату 29 февраля 2004 года.

По уму - прошел полный год.
А вот по вашим формулам - еще день подождать надо.


 
homm ©   (2007-04-25 10:42) [29]

> Сегодня 28 февраля 2005 года
> Проверяем дату 29 февраля 2004 года.
> По уму - прошел полный год.

Да ну? 0_о

Что-то мне так не кажеться.


 
Knight ©   (2007-04-25 11:42) [30]

> [26] homm ©   (25.04.07 10:13)

Я ж написал... 12*Месяц+День (в кодах подсознания) это количество дней с начала года :))


 
homm ©   (2007-04-25 11:49) [31]

> 12*Месяц+День это количество дней с начала года :))

Ни разу не так.
12*1 + 1 = 13
12*12 + 31 = 175
Цифры, которые получаються не имеют ничего общего с количеством прошедшим от начала года дней.


 
Knight ©   (2007-04-25 11:51) [32]

> [31] homm ©   (25.04.07 11:49)

А коды подсознания вообще мало чего имеют с действительностью.. %)


 
Knight ©   (2007-04-25 11:52) [33]

> [32] Knight ©   (25.04.07 11:51)

.. общего...


 
Knight ©   (2007-04-25 13:41) [34]

> [31] homm ©   (25.04.07 11:49)

А в реальном алгоритме это будет звучать примерно так.. если ничего не напутал :)
---

Годов=Г2-Г1
Если Дата(Д2,М2,Г1)-Дата(Д1,М1,Г1)<0 То Годов--


 
Knight ©   (2007-04-25 13:44) [35]

> [34] Knight ©   (25.04.07 13:41)

Да... в условии ещё Годов>0...
Т.е.

Годов=Г2-Г1
Если (Годов>0) и (Дата(Д2,М2,Г1)-Дата(Д1,М1,Г1)<0) То Годов--


 
SerJaNT ©   (2007-04-25 14:48) [36]

> [35] Knight ©   (25.04.07 13:44)

вот и получается как в [27]


 
homm ©   (2007-04-25 14:59) [37]

> вот и получается как в [27]

Чем [27] хуже [4], не понял :(


 
SerJaNT ©   (2007-04-25 15:01) [38]

> Чем [27] хуже [4], не понял :(


Ничем. Это я [4] переписал :)


 
Knight ©   (2007-04-25 15:19) [39]

> [36] SerJaNT ©   (25.04.07 14:48)

Неа... принцип другой :)


 
Knight ©   (2007-04-25 15:36) [40]

Примерно как-то так... проверить сейчас не могу :)

$year_diff  = date("Y") - $year;

if ($year_diff>0) and (mktime(0,0,0,date("d"),date("m"),$year)-mktime(0,0,0,$day,$month,$year)<0) { $year_diff--; }


Разврат, конечно.. %)



Страницы: 1 2 вся ветка

Форум: "Прочее";
Текущий архив: 2007.05.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.55 MB
Время: 0.048 c
6-1163759207
Gavrila
2006-11-17 13:26
2007.05.27
TIdMessage - определить, что письмо помечено на удаление?


10-1123905651
kblc
2005-08-13 08:00
2007.05.27
Как создать SingletonComServer?


8-1158148694
АМД134
2006-09-13 15:58
2007.05.27
Смена имен списка мр3


15-1177416368
alex_***
2007-04-24 16:06
2007.05.27
Транзакции для распределенных систем. Кто использовал?


2-1178518822
Washington
2007-05-07 10:20
2007.05.27
ConnectionString в ADOConnection





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский