$h = date('H');
if(time() > $time + 3600)
{
if ($h >= 0 && $h <= 4) $data= "Доброй ночи!";
if ($h >= 4 && $h < 12) $data="Доброе утро!";
if ($h >= 12 && $h < 18) $data= "Добрый день!";
if ($h >= 18 && $h < 0) $data= "Добрый вечер!";
}
Почему не отображает "Добрый вечер!"? 
Assassin, По условию выводить фразу нужно между 18 и 0 часов. В твоем случае '25 Июл, 21:22'
25 Июл 2010, 20:28$h = date('H');
if ($h >= 0 && $h <= 4) $data= "Доброй ночи!";
if ($h >= 4 && $h < 12) $data="Доброе утро!";
if ($h >= 12 && $h < 18) $data= "Добрый день!";
if ($h >= 18 && $h < 0) $data= "Добрый вечер!";
//Думаю так будет правильней 
3084, попробуй сменить апострофы на кавычки ("H") в функции date('H') 
я понял, у тебя ж число часов не отрицательное, а значит не может быть меньше нуля
делай так
$h = date("H");
if ($h >= 0 && $h <= 4) $data= "Доброй ночи!";
if ($h >= 4 && $h < 12) $data="Доброе утро!";
if ($h >= 12 && $h < 18) $data= "Добрый день!";
if ($h >= 18) $data= "Добрый вечер!";
// поправил свою ошибочку 