Indeed it is based on the server time, as the date() funciton is a PHP function and therefore happens at run time on the server before the page is ever delivered to the user. For a browser based local to user solution, JavaScript would make more sense.
I am now using the following :-
<!-- script to display greeting -->
<script language="JavaScript"><!--
var Greeting = "Hello. ";
var Today = new Date();
var CurrentHour = Today.getHours();
if (CurrentHour < 12) { Greeting = "Good Morning. "; }
if (CurrentHour >= 12 && CurrentHour < 17) { Greeting = "Good Afternoon. "; } if (CurrentHour >= 17) { Greeting = "Good Evening. "; } document.write(Greeting); //--></script><noscript>Hello. </noscript>
<!-- end of greeting script -->
<!-- script to display full date -->
<script language="JavaScript">
var Today = new Date();
var Days = new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
var Months = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
var Year = Today.getYear();
if (Year < 1000) { Year += 1900; }
var Day = Today.getDate();
var DateEnding = "th";
if (Day == 1 || Day == 21 || Day == 31) { DateEnding = "st"; }
else if (Day == 2 || Day == 22) { DateEnding = "nd"; }
else if (Day == 3 || Day == 23) { DateEnding = "rd"; }
document.write( Days[Today.getDay()] + " " + Day + DateEnding + " " + Months[Today.getMonth()] + " …