javascript+php實現根據使用者時區顯示當地時間的方法_php技巧

來源:互聯網
上載者:User

本文執行個體講述了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);    }}//設定Cookiefunction 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程式設計有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.