我使用的CMS允許我從UTC/GMT時間訪問用戶的時間偏移量。因此,如果用戶將自己的時區設置爲EST,則該偏移量將爲「-5」。如何檢查時間偏移是否在夏令時?
我在做什麼,現在,當我需要顯示當前的時間是一樣的東西:
date('M j Y h:i A', time() + $offset*3600)
這工作,除當夏令時爲用戶在影響,那麼它是一小時後。
所以,我的問題是,我怎麼能確定給定的時間是否偏移(如「-5」)需要有一個小時的加入呢?
我使用的CMS允許我從UTC/GMT時間訪問用戶的時間偏移量。因此,如果用戶將自己的時區設置爲EST,則該偏移量將爲「-5」。如何檢查時間偏移是否在夏令時?
我在做什麼,現在,當我需要顯示當前的時間是一樣的東西:
date('M j Y h:i A', time() + $offset*3600)
這工作,除當夏令時爲用戶在影響,那麼它是一小時後。
所以,我的問題是,我怎麼能確定給定的時間是否偏移(如「-5」)需要有一個小時的加入呢?
你不能單單從偏移得到這個,因爲偏移應用於整個緯度和對國家沒有統一的DST生效。例如in Australia, Daylight Saving Time is not observed in Queensland, the Northern Territory or Western Australia但在其他地方。你必須geolocate your users然後檢查PHP's DateTimeZone API該國是否有DST。
如果你已經是「-5」,那麼你沒有足夠的信息來做出決定。如果您可以安排訪問用戶所在時區的名稱(比如「America/New_York」),那將會更好。
*(相關)*有趣的閱讀:http://derickrethans.nl/storing-date-time-in-database.html – NikiC