2008-10-11 121 views

回答

59
date('Z'); 

返回UTC在幾秒鐘內偏移。

+1

謝謝。不幸的是,PHP要求你調用date_default_timezone_set()。如果將其設置爲GMT,則來自數據庫的日期仍將在本地時間,但日期('Z')將返回零。如果您將其設置爲服務器的時區,那麼您可以在包含文件中硬編碼服務器與GMT的偏移量。不可思議的是,沒有簡單的方法來做到這一點。編輯:我發現你可以做date_default_timezone_set(date_default_timezone_get())。如何asinine! – Oscar 2012-07-31 21:25:06

+0

日期('Z')以秒爲單位返回GMT偏移量 – Dahomz 2017-05-02 12:29:30

+0

返回0. – Adry 2018-02-21 17:14:09

16

timezone_offset_get()

$this_tz_str = date_default_timezone_get(); 
$this_tz = new DateTimeZone($this_tz_str); 
$now = new DateTime("now", $this_tz); 
$offset = $this_tz->getOffset($now); 

未經檢驗的,但應該工作

+0

有用的,如果您使用的是PHP 5 DateTime類,但我不是。 – 2008-10-11 01:36:40

-2

date("Z")將返回相對於服務器時區而不是用戶機器時區的UTC偏移量。要獲得用戶的機器時區,您可以使用javascript getTimezoneOffset()函數,該函數返回UTC時間與當地時間之間的時差,以分鐘爲單位。

<script type="text/javascript"> 
    d = new Date(); 
    window.location.href = "page.php?offset=" + d.getTimezoneOffset(); 
</script> 

而且在page.php持有你的PHP代碼,你可以做你想做與偏移值什麼的。或者不是重定向到另一個頁面,您可以根據您的需要通過Ajax將偏移值發送到您的php腳本。

10

我做了一個奧斯卡做了些微修改的版本。

date_default_timezone_set('America/New_York'); 
$utc_offset = date('Z')/3600; 

這給了我從我的時區EST到UTC的偏移量,以小時爲單位。

$ utc_offset的值爲-4。

11

echo date('P'); //將輸出的東西+02:00或-04:00

1

這是相同的JavaScript date.getTimezoneOffset()功能:

<?php 
echo round(date('Z')/-60,2); 
?>