php读取客户机本地时间,PHP如何获取客户端时区以及准确显示所在地时间
這篇文章主要為大家詳細介紹了PHP如何獲取客戶端時區以及準確顯示所在地時間,具有一定的參考價值,感興趣的小伙伴們可以參考一下,有需要的朋友可以收藏方便以后借鑒。
這段時間給用戶做了一個外貿網站,網站主要正對亞洲、歐洲已經美洲的用戶,其中有涉及到一個小功能,使用PHP實現根據訪客的時區給對方顯示他們當地時間,并記錄。但是有點前端設計的技術都知道PHP是運行在服務器終端的代碼,因此也只能獲取服務器的時間,所有僅僅使用PHP本身我們是無法獲取到客戶端時間這個功能的,這里我們需要找到JS來幫忙。
這里我們使用到JS來保存用戶時區信息到COOKIE,然后用服務器端的php讀取COOKIE實現根據用戶時區顯示當地時間的方法來實現,具體實現方法代碼如下:
1、JS代碼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);
}
通過這2段代碼我們就能基本實現PHP顯示當地時間了。
以上就是PHP如何獲取客戶端時區以及準確顯示所在地時間的全部內容,希望對大家的學習和解決疑問有所幫助,也希望大家多多支持361模板網。
感謝打賞,我們會為大家提供更多優質資源!
總結
以上是生活随笔為你收集整理的php读取客户机本地时间,PHP如何获取客户端时区以及准确显示所在地时间的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大跃进和循序渐进
- 下一篇: JSP中的:request.getSch