php time() 的問題

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

回複內容:

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

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

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

$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;

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

時區不一樣啊

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

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

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.