<?php /* *Отсчет времени с учетом морфологии *автор: nc_soft *15.12.07 */ //расчетная дата (часы, минуты, секунды, день, месяц, год) $dateTo=mktime(0,0,0,1,1,2008); //смещение по часам у хостера (в примере смещение от московского равно нулю) $timediff=$dateTo-time()-3600*0; $oneMinute=60; $oneHour=60*60; $oneDay=60*60*24; $dayfield=floor($timediff/$oneDay); $hourfield=floor(($timediff-$dayfield*$oneDay)/$oneHour); $minutefield=floor(($timediff-$dayfield*$oneDay-$hourfield*$oneHour)/$oneMinute); $secondfield=floor(($timediff-$dayfield*$oneDay-$hourfield*$oneHour-$minutefield*$oneMinute)); $sDaysLeft=$dayfield; $sDaysText = "дней"; $nDaysLeftLength =strlen($sDaysLeft); $d_1=substr($sDaysLeft,-1,1); if (substr($sDaysLeft,-2,1) != 1 && $nDaysLeftLength>1) { if ($d_1 == 2 || $d_1== 3 || $d_1== 4) { $sDaysText = "дня"; } elseif ($d_1== 1) { $sDaysText = "день"; } } if ($nDaysLeftLength==1) { if ($d_1==2 || $d_1== 3 || $d_1== 4) { $sDaysText = "дня"; } elseif ($d_1== 1) { $sDaysText = "день"; } } $sHoursLeft=$hourfield; $sHoursText = "часов"; $nHoursLeftLength = strlen($sHoursLeft); $h_1=substr($sHoursLeft,-1,1); if (substr($sHoursLeft,-2,1) != 1 && $nHoursLeftLength>1) { if ($h_1== 2 || $h_1== 3 || $h_1== 4) { $sHoursText = "часа"; } elseif ($h_1== 1) { $sHoursText = "час"; } } if ($nHoursLeftLength==1) { if ($h_1== 2 || $h_1== 3 || $h_1== 4) { $sHoursText = "часа"; } elseif ($h_1== 1) { $sHoursText = "час"; } } $sMinsLeft =$minutefield; $sMinsText = "минут"; $nMinsLeftLength = strlen($sMinsLeft); $m_1=substr($sMinsLeft,-1,1); if ($nMinsLeftLength>1 && substr($sMinsLeft,-2,1) != 1) { if ($m_1== 2 || $m_1== 3 || $m_1== 4) { $sMinsText = "минуты"; } else if ($m_1== 1) { $sMinsText = "минута"; } } if ($nMinsLeftLength==1) { if ($m_1== 2 || $m_1==3 || $m_1== 4) { $sMinsText = "минуты"; } elseif ($m_1== "1") { $sMinsText = "минута"; } } $sSecsLeft = $secondfield; $sSecsText = "секунд"; $s_1=substr($sSecsLeft,-1,1); $nSecsLeftLength = strlen($sSecsLeft); if (substr($sSecsLeft,-2,1)!= 1 && $nSecsLeftLength>1) { if ($s_1== 2 || $s_1== 3 || $s_1== 4) { $sSecsText = "секунды"; } elseif ($s_1== 1) { $sSecsText = "секунда"; } } if ($nSecsLeftLength==1) { if ($s_1== 2 || $s_1== 3 || $s_1== 4) { $sSecsText = "секунды"; } elseif ($sSecsLeft== "1") { $sSecsText = "секунда"; } } $displaystring="До Нового Года осталось:\n". $sDaysLeft." ". $sDaysText." ". $sHoursLeft." ". $sHoursText." ". $sMinsLeft." ". $sMinsText." ". $sSecsLeft." ". $sSecsText; if ($timediff<0) $displaystring='дата уже наступила'; echo $displaystring; ?>