Jollen 網路學院
|| Jollen 的 Embedded Linux 訓練方案 | Jollen 的 Embedded Linux 系列著作 ||
□ Jollen網路學院 >> PHP 讀者服務 >> PHP 練功房 □

如何調整時差 (1/2)

來源: Jollen 網路學院
作者: Jollen


如果自己的網站置放在國外的主機,就會有時差的問題,所以在處理日期時,PHP 就要另外做時差的處理,才能看到本地的時間。date() 函數是 PHP 內建用來取得日間與日期的函數,用 date() 來處理時差的問題是非常好的選擇。

首先,我們先呼叫 date("U") 取得 timestamp,再將 timestamp 加上時差,最後再呼叫 date() 將 timestamp 格式化成我們要的格式。請看底下的範例:

<?php

//假設 PHP 所在的機器是 MDT 時區
$t = date("U");

//$t 現在存放 MDT 目前時間自 epoch 開始所經過的秒數
$date_mdt = date("Y-m-d H:i:s", $t);

//我們要換成 CST 時間
$date_cst = date("Y-m-d H:i:s", $t+50400);

echo "MDT: $date_mdt <br>";
echo "CST: $date_cst <br>";
?>

我們現在假設 PHP 在 MDT 時區的機器上執行。

$t 存放 date("U") 傳回來的 timestamp,timesamp 通常指的是自 epoch 到現在所經過的秒數。epoch 指的是 1970/01/01 00:00:00,date("U") 是根據 UNIX 的時間設定工作,所以當然也是傳回 epoch 到目前所在時區所經過的秒數。

我們將 $t 加上 50400 的時差,再利用 date("Y-m-d H:i:s") () 傳回我們指定的格式。為什麼加 50400 呢?因為筆者想將 "MDT" 時區轉成在台灣的 "CST" 時區,而 MDT 時間差落後 CST 時區 50400 秒。

接下來還有一個問題,我們怎麼知道 MDT 與 CST 時區相差 50400 秒 (14 個小時) 呢?最直覺的方法就是查資料,不過還有更輕鬆愉快的方法,我們留待下回分曉!

上面這段程式執行後會輸出:

MDT: 2001-05-20 16:51:08
CST: 2001-05-21 06:51:08

註: 參考「PHP4 網站實作--深度研究篇」第 4-28 頁。

--Jollen

PHP 練功房
· PHP 檔案上傳 (2/2)
· PHP 檔案上傳 (1/2)
· Pageview 計數器
· PHP 命令模式的使用
· 如何調整時差 (2/2)
· 如何調整時差 (1/2)
· 去除字串裡的 HTML 語法
· 以物件方式維護資料
回首頁 |  TOP |
    Copyright (c) 2006 www.jollen.org
All rights reserved. 更新日期: 2006/04/11