我使用Zend_Date在日程安排應用程序中管理日期/時間。我如何簡單地用Zend_Date更改時區偏移?
我能夠確定用戶的時區的唯一方法是通過JavaScript,它只給出時區偏移量。 Zend_Date似乎只採用'America/New_York'格式的時區。
有沒有辦法以這種格式獲取用戶時區或用Zend_Date設置時區偏移?
謝謝!
我使用Zend_Date在日程安排應用程序中管理日期/時間。我如何簡單地用Zend_Date更改時區偏移?
我能夠確定用戶的時區的唯一方法是通過JavaScript,它只給出時區偏移量。 Zend_Date似乎只採用'America/New_York'格式的時區。
有沒有辦法以這種格式獲取用戶時區或用Zend_Date設置時區偏移?
謝謝!
尼基索引的數組,
你並不真的需要Zend_Date的運算此作爲PHP內在DateTime和DateTimeZone對象很好的工作這一點;不過,如果你真的需要使用Zend_Date,我可以指出你正確的方向。
參見下面的實施例
這應該讓你到你需要的地方。如果您遇到問題,請發佈代碼示例。
您可以使用JavaScript將cookie設置爲用戶時區偏移量。
然後在PHP中,你可以通過有偏移
$timezones = array (
'-1' => 'adfas/adsfafsd',
'-2' => 'adsfasdf/asdfasdf'
...
);
$date->setTimezone($timezones[$_COOKIE['tz_offset']]);
您可以使用timezone_name_from_abbr功能:
$javascript_offset = '-1';
$zone = timezone_name_from_abbr('', $javascript_offset * 3600, 0);
您還需要考慮DST。有關更多信息,請參閱this example。
順便說一句,更好的做法是允許用戶從您存儲的列表中選擇他們的時區。如果你想讓用戶更容易,你可以首先提供一個猜測列表。 以下內容可能對此有所幫助: 靜態方法「DateTimeZone :: listAbbreviations()」將返回時區縮寫列表,其中還包括偏移量(與UTC/GMT的偏移量)。使用你的Javascript結果來搜索這個數組可能的時區。可能會有模仿,因此向用戶呈現模仿並讓他們選擇。 – 2010-05-15 05:53:02