在PHP中将unix时间转换为UTC日期/时间



UTC日期2022-12-11开始于unix时间1670716800(显然可以被24*3600整除)。

在PHP中,我可以这样从左向右转换

$Date = "2022-12-11";
echo strtotime ($Date." 00:00 UTC"); 

如预期的那样,输出是1670716800。

但是如何转换回来呢?如果我执行getdate(1670716800),我将得到一个带有时间的日期,但在我的本地时区,而我想要UTC。

如果可以避免,我不想使用面向对象的PHP。

我的时区是UTC,所以你会得到不同的结果,但使用date_default_timezone_set()函数来定义date()函数将对时间戳

做什么
$Date = "2022-12-11";
$tstamp = strtotime ($Date." 00:00:00 UTC");
echo date_default_timezone_get() . '-';
echo date('Y/m/d H:i:s', $tstamp) . PHP_EOL. PHP_EOL;

date_default_timezone_set('America/Los_Angeles');
echo date_default_timezone_get() . '-';
echo date('Y/m/d H:i:s', $tstamp) . PHP_EOL. PHP_EOL;
date_default_timezone_set('Australia/Brisbane');
echo date_default_timezone_get()  . '-';
echo date('Y/m/d H:i:s', $tstamp) . PHP_EOL;

结果

UTC-2022/12/11 00:00:00
America/Los_Angeles-2022/12/10 16:00:00
Australia/Brisbane-2022/12/11 10:00:00

gmdate("Y-m-d H:i:s", 1670716800)返回"2022-12-11 00:00:00"

gmdate("Y-m-d H:i:s")以该格式返回当前的GMT/UTC时间(因为GMT时间被定义为等于UTC时间)。

$timestamp = 1607980736;
$utc_date_time = date('Y-m-d H:i:s', $timestamp);
echo $utc_date_time;

输出:2021-12-11 16:45:36

最新更新