簡體   English   中英

PHP Datetime 對象和 strtotime 的時區和時間戳不正確

[英]Incorrect timezone and timestamp with PHP Datetime objects and strtotime

我的服務器時區是 UTC,但是當我創建 DateTime object 或使用 strtotime 將日期轉換為時間戳時,結果是錯誤的。

我做了一個簡單的代碼:

$date_init = '2020-07-25 13:00:00';
$dt = new DateTime( $date_init, new DateTimeZone( 'UTC' ) );

$timezone = date_default_timezone_get();
$strtotime = strtotime( $date_init . ' UTC' );
$timestamp = $dt->getTimestamp();
$date_final = $dt->format( 'Y-m-d H:i:s P e' );

當我回顯這些值時:

$date_init = 2020-07-25 13:00:00
$timezone = UTC
$strtotime = 1595700000
$timestamp = 1595700000
$date_final = 2020-07-25 13:00:00 -05:00 UTC

甚至時間戳也是錯誤的(1595700000 = 2020-07-25 18:00:00 UTC)(在線轉換器)。

預期結果是:

$timestamp = 1595682000
$strtotime = 1595682000
$date_final = 2020-07-25 13:00:00 +00:00 UTC

我不明白發生了什么,有人可以幫忙嗎?

PHP 版本:7.3.19

創建 DateTime object 時,提供時區作為第二個參數。

$date_init = '2020-07-25 13:00:00';
$dt = new DateTime( $date_init , new DateTimeZone("UTC"));

echo $dt->format('Y-m-d H:i:s P e');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM