UTC日期2022-12-11开始于unix时间1670716800(显然可以被24*3600整除)。
在PHP中,我可以这样从左向右转换
$Date = "2022-12-11";
echo strtotime ($Date." 00:00 UTC");
如预期的那样,输出是1670716800。
但是如何转换回来呢?如果我执行getdate(1670716800)
,我将得到一个带有时间的日期,但在我的本地时区,而我想要UTC。
我的时区是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