2011-07-14 48 views
0

我目前將日期作爲PHP時間戳(整數字段)存儲在我的MYSQL數據庫中。但是,如果我從數據庫中檢索並使用PHP日期函數,它是否會根據客戶端的時區顯示正確的時間。PHP的時間戳,並在不同的時區顯示正確的日期和時間

例如,我在東部時間顯示一個PHP時間戳1310674625(從DB拉出),它是Jul 14 2011 22:17:05。因此,如果我使用下面的代碼在PHP中顯示時間戳,那麼查看太平洋時區中的網頁的人是否會看到Jul 14 2011 19:17:05

echo date('M d Y H:i:s', 1310674625); 
+0

我不認爲它會像那個,爲什麼不ü將其保存爲UTC和使用JavaScript確定客戶端時區並正確格式化 – Ibu

回答

1

不會。日期將根據服務器的時間和時區顯示,而不是用戶的顯示。

您可以在您的網站上提供一個選項,以允許用戶提供他/她的時區(或嘗試使用基於IP的地理位置)並根據輸出調整輸出。

根據this post,可靠地確定用戶的時區可能是不可能的,因此爲了獲得最佳結果,您可能需要從用戶那裏獲得輸入。

編輯(基於在評論更多信息的請求)

如果需要輸出選擇時區,可以使用下列選項之一:

echo date('e'); // Examples: UTC, GMT, Atlantic/Azores (Available in version 5.1.0 and later 
echo date('O'); // Different in Greenwich meantime. Example: +0200 
echo date('T'); // Timezone abbreviation. Examples: EST, MDT ... 

date手冊頁獲取更多信息。

編輯2:

「打印日期到指定的時區」,你將需要:

  1. 獲取當前日期作爲時間戳(time()
  2. 獲取用戶的時區偏移量
  3. 使用mktime根據需要添加或減去用戶的偏移量。
  4. 使用date()將結果轉換回人類可讀的格式。
+0

嘿,13秒更快:) – genesis

+0

那麼有沒有辦法在PHP中打印日期到指定的時區? – peter

+0

@PeterBZ:請參閱我更新的答案以獲取更多信息。 –

-1

使用date_default_timezone_set如果你知道用戶的時區

您也可以使用JavaScript日期(在這裏打印時間戳)

+0

這將設置服務器上腳本使用的默認時區,但不會影響基於用戶位置的數據。 –

+0

你可以詢問用戶他的時區 – RiaD