javascript+php實(shí)現(xiàn)根據(jù)用戶時(shí)區(qū)顯示當(dāng)?shù)貢r(shí)間的方法
來(lái)源:易賢網(wǎng) 閱讀:1022 次 日期:2015-03-13 10:17:44
溫馨提示:易賢網(wǎng)小編為您整理了“javascript+php實(shí)現(xiàn)根據(jù)用戶時(shí)區(qū)顯示當(dāng)?shù)貢r(shí)間的方法”,方便廣大網(wǎng)友查閱!

這篇文章主要介紹了javascript+php實(shí)現(xiàn)根據(jù)用戶時(shí)區(qū)顯示當(dāng)?shù)貢r(shí)間的方法,實(shí)例分析javascript獲取客戶端時(shí)區(qū)及與服務(wù)器端php交互的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下

本文實(shí)例講述了javascript+php實(shí)現(xiàn)根據(jù)用戶時(shí)區(qū)顯示當(dāng)?shù)貢r(shí)間的方法。分享給大家供大家參考。具體如下:

在跨時(shí)區(qū)應(yīng)用中會(huì)用到下面代碼,這是以前寫(xiě)的一段代碼。

服務(wù)器保存相關(guān)時(shí)間配置,保存形式為GMT時(shí)間,客戶端需要根據(jù)客戶所在時(shí)區(qū)做相應(yīng)顯示,以符合客戶習(xí)慣。

1. JavaScript代碼如下:

window.onload = function() {

//TODO begin 處理登陸用戶時(shí)區(qū)

//獲得登陸用戶時(shí)區(qū)與GMT時(shí)區(qū)的差值

var exp = new Date();

var gmtHours = -(exp.getTimezoneOffset()/60);

setCookie('customer_timezone',gmtHours,1);

//判斷是否為夏令時(shí)

date = exp.format('yyyy-MM-dd HH:mm:ss');

if(inDaylightTime(date)){

setCookie('inDaylightTime',1,1);

}

}

//設(shè)置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())

}

//判斷時(shí)間是東半球還是西半球

function isEastEarthTime(newDate)

{

var dj= newDate.getGMTOffset(false);

if (dj.indexOf("-") == -1){

return true;

} else {

return false;

}

}

//是否是夏令時(shí)

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);

// 如果年始和年中時(shí)差相同,則認(rèn)為此國(guó)家沒(méi)有夏令時(shí)

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. 服務(wù)器端php代碼:

//24小時(shí)內(nèi) GMT到本地時(shí)間的轉(zhuǎn)換

function gmt_to_local($time = '', $dst = FALSE){

//JavaScript設(shè)置Cookie,PHP取值

if (isset($_COOKIE["customer_timezone"])){

$timezone = $_COOKIE["customer_timezone"];

}else{

$timezone = 0;

}

if ($time == ''){

return now();

}

//時(shí)間處理

$time += $timezone * 3600;

//是否為夏令時(shí)

if(isset($_COOKIE["inDaylightTime"]) && $_COOKIE["inDaylightTime"]==1)

{

$dst = TRUE;

}

if ($dst == TRUE){

$time += 3600;

}

return date("H:i",$time);

}

希望本文所述對(duì)大家的php程序設(shè)計(jì)有所幫助。

更多信息請(qǐng)查看IT技術(shù)專欄

更多信息請(qǐng)查看網(wǎng)絡(luò)編程
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國(guó)考·省考課程試聽(tīng)報(bào)名

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)