Согласен, что никому не нужно, но, кажется это ДЗ..
Если действительно можно забить на время клиента, то делается легко на любом языке:
Псевдокод который прокатит везде:
greetings = Array ["Доброй ночи","Доброе утро","Добрый день","Добрый вечер"]
images = Array ["night","morning","afternoon","evening"]
offset = CurrentTime.Hours
if (offset > 23 || offset < 6) { offset = 0 }
else if (offset < 11) { offset = 1 }
else if (offset < 18) { offset = 2 }
else { offset = 3 }
std.io.write("<style>body: { background: url('images/"+images[offset]+".jpg')}</style>")
std.io.write(...)
....
std.io.write("<h2>"+greetings[offset]+"</h2>")
На js можно реализовать с учетом времени клиента: с сервера загружать все четыре картинки с css display: none, после загрузки узнать время, поставить на БГ нужную картинку и текст, для красоты ещё animate opacity воткнуть.