Имеется вот такой скрипт линеек (это немного переделанный от metrik_Robin). Все работает нормально за исключением фиговины с кол-вом дней. Дело даже не в точности, думаю никто по линейкам научные наблюдения не ведет, а в ГЛЮКЕ когда наступает годовщина, например "...прошло уже 3 года 0 месяцев 0 дней" На следующий день фраза вобще не генерится, и так продолжается целых 6 дней, потом генерится: "...прошло уже 3 года 0 месяцев 1 день" Насколько я понял это происходит изза того что скрипт считает что в месяце 30 дней, но если разделить 365 (фиг с ними с високосными) на 12 получаем грубо 30,5 - вот за год и набегает 6 "потерявшихся" дней. Вопросы: 1.Как сделать чтобы считалось правильно? или хотя бы 2.Как сделать чтобы эти 6 дней генерилась например фраза "Дружно все квасим!" и еще 3.Как сделать чтобы при вводе даты РАНЕЕ 1970го года генерилась например фраза "Бабуля, пшла атседа" В PHP как вы поняли имею оооочень поверхностные знания. Вот этот кусок: PHP: <?php .... imagecopy($out,$line,0,$out_h-$line_sy ,0,0,$line_sx,$line_sy); $pixpm=$line_sx/12; $std=$_GET['d']; $ed=time(); $sid=3600*24; $sim=3600*30*24; $sty=mktime(0,0,0,0,0,date('Y',$std)); $offset=abs($ed-$std); $years=floor($offset/(365*24*60*60)); $offset=$offset-$years*(365*24*60*60); $monsz=floor($offset/(30*24*60*60)); $offset=$offset-$monsz*(30*24*60*60); $days=floor($offset/(24*60*60)); $beg_x=$monsz*$pixpm; imagecopy($out,$beg,$beg_x,5,0,0,$beg_sx,$beg_sy); if ($years>0) $str_metrik=$text.' '.$years.' лет '.$monsz.' месяцев и '.$days.' дней'; else $str_metrik=$text.' '.$monsz.' месяцев и '.$days.' дней'; if($beg_x<$line_sx) imagefttext($out,6,0,10,$out_h+10,imagecolorallocate($out,0,0,0),'raxel.ttf', win2uni($str_metrik)); imagefttext($out,6,0,$line_sx-87,10,imagecolorallocate($out,0,0,0),'raxel.ttf', win2uni('www.fbi.ru')); imagepng($out); ?>
Front Проблема уже решалась - http://php.ru/forum/viewtopic.php?p=67392 При необходимом изменение будет то, что вам нужно.
0: У нас для кода есть тег PHP. Если несложно. 1: Надо переписать формулу для подсчета дней. Это не программмирование, это математика. 2+3+бонус: Вот этот кусок поменять на ээтот: PHP: <?php $str_metrik = $text; if (($monsz == 0) and ($days==0) ) { $str_metrik = 'Дружно квасим!'; } else { if ($years>0) { $str_metrik.= $years. 'лет '; } if ($monsz>0) { $str_metrik.= $monsz. 'месяцев '; } if ($days>0) { $str_metrik.= $days. 'дней '; } } ?>
Спасибо, но к сожалению для меня это очень тугопонятно. Угу, исправил, сорри. Ткнул Code и где-то мысль промелькнула почему не так красиво вышло как у всех тут. Спасиииибоооо!!!! Методом тыка понял что это оно: $monsz=floor($offset/(30.42*24*60*60)); $offset=$offset-$monsz*(30.42*24*60*60); Теперь все правильно считает! (Ну в масштабах года конечно) Спасибо, работает. Олег, низкий поклон!
Чуть не забыл, если не сложно - а как добавить возможность ручного выбора цвета надписи? В этом скрипте он както сам выбирается то черный то красный.
Угу, точно, этоже просто, раз в 4 года + 1день! Похоже что вот так правильно: PHP: <?php $years=floor($offset/(365.25*24*60*60)); $offset=$offset-$years*(365.25*24*60*60); $monsz=floor($offset/(30.4375*24*60*60)); $offset=$offset-$monsz*(30.4375*24*60*60); $days=floor($offset/(24*60*60)); ?> Попробовал, вроде правильно считает. Только не пойму что вот это, и для чего: PHP: $sid=3600*24; $sim=3600*30*24;