Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.27;
Скачать: CL | DM;

Вниз

Еще один вопрос по 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;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.032 c
6-1163789476
__Nick__
2006-11-17 21:51
2007.05.27
Webbrowser+рисунок.png


15-1178012527
DVM
2007-05-01 13:42
2007.05.27
Счетчик ошибок страницы в Диспетчере задач.


8-1158138002
serebrov_e_l
2006-09-13 13:00
2007.05.27
Фильтрация звука


2-1178392090
first
2007-05-05 23:08
2007.05.27
Кол-во папок


2-1178889302
Ezorcist
2007-05-11 17:15
2007.05.27
Можно отобразить в label текс шрифтом не в системе?