javascript+phpはユーザーのタイムゾーンによって現地時間を表示する方法を実現します。


本論文の実例は、javascript+phpが、ユーザのタイムゾーンに従ってローカル時間を表示する方法を実現することを述べている。皆さんの参考にしてください。具体的には以下の通りです
タイムゾーンでは下記のコードが使われます。これは前に書いたコードです。
サーバーは関連時間の配置を保存して、保存形式はGMT時間です。クライアントはお客様の時間帯に応じて相応の表示をして、お客様の習慣に合うようにします。
1.JavaScriptコードは以下の通りです。

window.onload = function() {
//TODO begin         
    //         GMT     
    var exp = new Date();
    var gmtHours = -(exp.getTimezoneOffset()/60);
    setCookie('customer_timezone',gmtHours,1);
    //        
    date = exp.format('yyyy-MM-dd HH:mm:ss');
    if(inDaylightTime(date)){
      setCookie('inDaylightTime',1,1);
    }
}
//  Cookie
function setCookie(c_name,value,expiredays){
    var exdate=new Date()
    exdate.setDate(exdate.getDate()+expiredays)
    document.cookie=c_name+ "=" +escape(value)+
    ((expiredays==null) ? "" : "; expires="+exdate.toGMTString())
}
//             
function isEastEarthTime(newDate)
{
  var dj= newDate.getGMTOffset(false);
  if (dj.indexOf("-") == -1){
    return true;
  } else {
    return false;
  }
}
//      
function inDaylightTime(date){
 var start = new Date(date.getTime());
 start.setMonth(0);
 start.setDate(1);
 start.setHours(0);
 start.setMinutes(0);
 start.setSeconds(0);
 var middle = new Date(start.getTime());
 middle.setMonth(6);
 //            ,           
 if ((middle.getTimezoneOffset() - start.getTimezoneOffset()) == 0) 
 {
   return false;
 }
 var margin = 0;
 if (this.isEastEarthTime(date)) {
   margin = middle.getTimezoneOffset();
 } else {
   margin = start.getTimezoneOffset();
 }
 if (date.getTimezoneOffset() == margin) {
   return true;
 }
 return false;
}
//DONE end
2.サーバ端phpコード:

//24    GMT        
function gmt_to_local($time = '', $dst = FALSE){
  //JavaScript  Cookie,PHP  
  if (isset($_COOKIE["customer_timezone"])){
    $timezone = $_COOKIE["customer_timezone"];
  }else{
    $timezone = 0;
  }
  if ($time == ''){
    return now();
  }
  //    
  $time += $timezone * 3600;
   
  //      
  if(isset($_COOKIE["inDaylightTime"]) && $_COOKIE["inDaylightTime"]==1)
  {
    $dst = TRUE;
  }
  if ($dst == TRUE){
    $time += 3600;
  }
  return date("H:i",$time);
}
本論文で述べたように、皆さんのphpプログラムの設計に役に立ちます。