首頁  >  文章  >  後端開發  >  php time() 的問題

php time() 的問題

WBOY
WBOY原創
2016-08-23 09:17:511787瀏覽

time()取得是伺服器的時間,那麼在中國,和美國取得時間是一樣的嗎?因為開發出了個問題,商品團購活動在中國已經結束,但是國外還能購買,所有時間用的都是時間戳,資料庫的開始時間是一致的,難道是time()的問題?

回覆內容:

time()取得是伺服器的時間,那麼在中國,和美國取得時間是一樣的嗎?因為開發出了個問題,商品團購活動在中國已經結束,但是國外還能購買,所有時間用的都是時間戳,資料庫的開始時間是一致的,難道是time()的問題?

時間戳記是 從格林威治時間1970年01月01日00時00分00秒起至現在的總秒數。
所以,這個值與時區無關,與時區有關的是時間,例如1471827600是北京時間(2016-08-22T09:00,東8區),那麼同樣的時間戳在東區的時間䪱炯2016-08-22T08:00。

上下樓答案都對, 時間戳與時區無關. 但是時間戳轉化成日期時間格式時, 與時區有關. 之前答案錯誤... 為誤導題主道歉.

<code class="php">$time = time();
date_default_timezone_set('America/Los_Angeles'); 
echo time() . PHP_EOL;
echo date('Y-m-d H:i:s', $time) . PHP_EOL;

date_default_timezone_set("UTC"); 
echo time() . PHP_EOL;
echo date('Y-m-d H:i:s', $time) . PHP_EOL;</code>

time()獲得的是時間戳,而時間戳是無時區的,都是統一採用格林尼治時間。所以除非你兩台伺服器本身的伺服器時間就不一致,不然得到的time()是一致的。

時區不一樣啊

統一時區,為UTC,我也遇過

函數time()獲取的是時間戳,是沒有時區概念的.
但是如果你用國內外2台服務器,設置同一個時間戳開始售賣,同一時間戳結束售賣,那麼國內開始的時候,國外的網站是沒有開始的,(推測的依據是題主說國內結束國外還沒有結束,而售賣持續的時間一樣)因為時間戳轉換為時間就有了時區的概念,所以如果要同時售賣,同時結束,你需要將兩地的時間換算成格林威治標準時間(時間戳的由來),然後得到不同的時間戳,加上你想要持續的售賣時間就可以了.

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn