Source code
<?php
ob_start();/* header buffer */
session_start();
?>
<html>
<body>
<a  href="http://snippets.bluejon.co.uk/index.php"/>MENU</a>
<br><br><br>

<?php
/*
Javascript has to be run on computers to get their local time.
The time is stored in $_SESSIONS. 
If the $_SESSIONS are unset, javascript is run to get the time offset from GMT.
The result is put into a form in a hidden field the sent by post.
The GMT time is then got with php and changed to the local time with the posted offset. 
Change php date $_SESSIONS to progam needs.
*/
### test for time zone offset $_POST #####################################
if (isset($_POST['offsetHours'])){
    $_SESSION['gmtOffset']= $_POST['offsetHours'];
    ### set timestamps ###################################################
  $utc_str = gmdate("M d Y H:i:s", time());
  $gmtTime = strtotime($utc_str);
    $localTime= $gmtTime+ ($_SESSION['gmtOffset']*3600);/*adjust to local time*/
    ### calculate date variables  #########################################
  $_SESSION['gmtYear']= date(Y,$gmtTime);/*Year, four diget*/
    $_SESSION['gmtMonthNum']= date(n,$gmtTime);/*month number, no leading zeros*/
    $_SESSION['gmtMonthName']= date(M,$gmtTime);/*month name, three letters*/
    $_SESSION['gmtMonthDayNum']= date(j,$gmtTime);/*day of the month*/
    $_SESSION['gmtWeekDayNum']= date(w,$gmtTime);/*day of the week number, 0=Sun>6=Sat*/
  $_SESSION['gmtWeekDayName']= date(D,$gmtTime);/*day of the week name, three letters*/
  $_SESSION['gmtHour']= date(G,$gmtTime);/*hour of the day, 24hr*/
  $_SESSION['gmtMinute']= date(i,$gmtTime);/*minutes*/  
    $_SESSION['gmtSecond']= date(s,$gmtTime);/*seconds*/  
    
    $_SESSION['ltYear']= date(Y,$localTime);/*Year, four digets*/
    $_SESSION['ltMonthNum']= date(n,$localTime);/*month number, no leading zeros*/
    $_SESSION['ltMonthName']= date(M,$localTime);/*month name, three letters */
    $_SESSION['ltMonthDayNum']= date(j,$localTime);/*day of the month*/
    $_SESSION['ltWeekDayNum']= date(w,$localTime);/*day of the week number, 0=Sun>6=Sat*/
  $_SESSION['ltWeekDayName']= date(D,$localTime);/*day of the week name, three letters*/
    $_SESSION['ltHour']= date(G,$localTime);/*hour of the day, 24hr*/
    $_SESSION['ltMinute']= date(i,$localTime);/*minutes*/  
    $_SESSION['ltSecond']= date(s,$localTime);/*seconds*/      
    ### print time zone offset hours ########################################
    print"Time zone offset= ". $_SESSION['gmtOffset']. "<br>";
    ### print GMT time #######################################################
    print "<br>GMT time<br>";    
    print "GMT date= ". date("M d Y H:i:s",$gmtTime)."<br>";    /*gmt date*/    
    print "GMT year= ". $_SESSION['gmtYear']. "<br>";
    print "GMT month number= ". $_SESSION['gmtMonthNum']. "<br>";
    print "GMT month name= ". $_SESSION['gmtMonthName']. "<br>" ;
    print "GMT day of the month= ". $_SESSION['gmtMonthDayNum']. "<br>";
    print "GMT weekday number= ". $_SESSION['gmtWeekDayNum']. "<br>";
  print "GMT weekday name= ". $_SESSION['gmtWeekDayName']. "<br>";
  print "GMT hour of day= ". $_SESSION['gmtHour']. "<br>";
    print "GMT minutes= ". $_SESSION['gmtMinute']. "<br>";    
    print "GMT seconds= ". $_SESSION['gmtSecond']. "<br>";
    ### print local time ###################################################
  print "<br>Local time<br>";
    print "Local time date= ". date("M d Y H:i:s",$localTime)."<br>";    /*local time date*/    
    print "Local time year= ". $_SESSION['ltYear']. "<br>";
    print "Local time month number= ". $_SESSION['ltMonthNum']. "<br>";
    print "Local time month name= ". $_SESSION['ltMonthName']. "<br>" ;
    print "Local time day of the month= ". $_SESSION['ltMonthDayNum']. "<br>";
    print "Local time weekday number= ". $_SESSION['ltWeekDayNum']. "<br>";
  print "Local time weekday name= ". $_SESSION['ltWeekDayName']. "<br>";
    print "Local time hour of day= ". $_SESSION['ltHour']. "<br>";
  print "Local time minutes= ". $_SESSION['ltMinute']. "<br>";    
    print "Local time seconds= ". $_SESSION['ltSecond']. "<br>";
### enbeded javascript to get local time zone ############################### 
}else{/* test to see if $_SESSION is set */
?>
    <form name="offsetHoursForm" action= "<?php echo $PHP_SELF ?>" method="post">
    <input type="hidden" name="offsetHours" id="offsetHours" value="0">
    </form>
    <script type="text/javascript">
    <!--
    var currentdate = new Date();
    var offsetHours = -currentdate.getTimezoneOffset()/60;
    document.getElementById('offsetHours').value = offsetHours;
    document.offsetHoursForm.submit();
    //-->
    </script>
<?php
}
?>
<br><br><br>
<a  href="http://snippets.bluejon.co.uk/localtimezone/local-timezone-v1-phpcode.php">Display php source code </a> 

</body>
</html>
<?php
ob_end_flush();
?>