更新於 2024/09/21閱讀時間約 1 分鐘

PHP 時區的問題

這支 PHP 的小程式,輸入時間,會顯示回傳的時間:
<?=date("Y-m-d H:i:s T", strtotime($argv[1])).PHP_EOL;?>
放在 command line 執行,如下:
$ php cst.php “2018–04–01 00:00:00 cst”
執行的畫面
執行的畫面
多了 14 小時,好神奇。
追 PHP Source 好了,看問題在哪。找到這支定義時區的設定: timezonemap.h
github 的 php-src/ext/date/lib/timezonemap.h
昏倒, 原來差的 14 小時, 是因為有三個不同的時區, 簡稱都是 CST:
  1. 北美中部時區 (Central Standard Time) 是 UTC-6
  2. 中原標準時區 (Central Standard Time) 是 UTC+8
  3. 澳洲中央時區 (Central Standard Time) 是 UTC+9.5 (註: 目前的 PHP, 澳洲中央時區,已改成 ACST)
分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.