簡體   English   中英

如何使用PHP或javascript在與用戶相同的時區中顯示日期時間?

[英]How do I show datetime in the same time zone as user using PHP or javascript?

假設現在我有這樣的日期時間顯示:

2010-05-29 15:32:35

可以通過date_default_timezone_get獲得相應的時區,

如何在與用戶瀏覽器相同的時區中輸出結果,以免使用戶感到困惑?

沒有可靠的方法從PHP或JavaScript讀取用戶的語言環境時區設置。

在JavaScript中,您可以讀取UTC與用戶當前時區中的時間之間的偏移量,但這並不能為您提供時區名稱,因此您可以保留時區標識符(使時間完全不明確)或保留其中是一個類似UTC+01:00的顯式偏移量,這很丑陋,並且仍然不會在不同的DST時段更改時區。

正如bobah所說,您可以在JavaScript Date上使用toLocaleString()在客戶端的實際桌面時區中輸出它。 但是,通過這種方式,您完全無法控制日期格式。 例如,在我的機器上,Chrome輸出笨拙的代碼:

Sat May 29 2010 15:03:46 GMT+0200 (W. Europe Daylight Time)

歌劇只是咳嗽:

29/05/2010 15:03:46

它根本沒有說明時區,因此毫無意義。 IE同樣簡潔,Safari也沒有規定時區。 Firefox在Linux上適合我,但在Windows上不適合。 哎呀。

因此,如果您需要可靠性,處理時區的唯一方法是讓用戶在其站點設置中手動選擇一個,然后在為其創建頁面時將其從UTC轉換為該時區。 您可以在JavaScript中猜測在某些常見時區中最有可能是哪個時區(有關策略,請參見此問題 ),但您不能保證自己會是對的。

您可以將UTC時間戳傳遞到頁面,並使用JavaScript進行轉換。 我曾經使用過這個技巧,對結果感到滿意。 有一個采用UTC時間戳記的JavaScript Date 構造函數 為了從PHP生成UTC時間戳,可以使用gmmktime()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM