Форум: "Прочее";
Текущий архив: 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