如何解決時區問題?

螢幕快照 2015-08-02 下午5.10.19

原本是想說在資料庫裡存上「時間微調」,例如「GMT +8」就會存上「480(正整數)」(將小時換成分鐘)

接著在需要呼叫時間的時候用下列方式去回傳:

$TimeOffset = 480;

date($TimeFormat, $Time + ($TimeOffset * 60) * 60)

原理很簡單,就是將 Unix 時間加上「正」或是「負」來微調時間,模擬 +00:00 或是 -00:00 之類的時區

但是後來發現網路上有人說這樣做並不可行,例如英國在三月到十月之間,時區為 BST (GMT + 1)

這個時候我們所做的「時間微調」就廢掉了,這是想玩死誰。


最後

這個時候還是只能投靠原 PHP 的函式了,那就是 DateTime 函式

然後就必需存像這樣的字串在資料庫裡:"Asia/Taipei", “Pacific/Nauru",

這裡是他的用法

$DateTime = new DateTime($TimeStamp, $TimeZone);
echo $DateTime->format('Y-m-d H:i:s');
$Datetime->setTimezone(new DateTimeZone('Asia/Taipei'));
echo $DateTime->format('Y-m-d H:i:s');
廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s