php 日期返回 1970-01-01 08:00:00

问题描述

<?PHP 
echo date("Y-m-d H:i:s",0);
 ?>

//结果:1970-01-01 08:00:00

我的问题:函数日期的第二个参数是0,应该是1970-01-01 00:00:00。 为什么是 1970-01-01 08:00:00 ?
我在 PHP.ini 中设置了配置
[日期]
date.timezone=Asia/Ho_Chi_Minh
//Asia/Ho_Chi_Minh: UTC + 7 (GMT + 7)
请帮帮我。

解决方法

来自wiki

Unix 纪元是 1970 年 1 月 1 日 UTC 时间 00:00:00

如您所见,开头是由 UTC 时区开始的。这意味着当 Unix 时代开始时,它是 8:00 中的 Asia/Ho_Chi_Minh

如果你需要得到 0:00 你必须设置负的第二个参数

date_default_timezone_set('Asia/Ho_Chi_Minh'); // Set UTC timezone
echo date("Y-m-d H:i:s",-(8 * 60 * 60));

Demo

,

Date phpDefault timezone set 如果您想设置当前时间:

date_default_timezone_set('Asia/Ho_Chi_Minh');
echo date("Y-m-d H:i:s");

您不需要第二个参数。

,

date() 总是显示当地时间。那是给你的亚洲/胡志明市。 gmdate() 函数用于显示 UTC/GMT 时间。

echo gmdate("Y-m-d H:i:s",0);
//Result: 1970-01-01 00:00:00

您也可以使用日期时间。如果 DateTime 是根据时间戳创建的,则内部时区始终为 UTC。

$dateTime = new DateTime('@0');
echo $dateTime->format("Y-m-d H:i:s");
//Result: 1970-01-01 00:00:00

您无需为任一选项更改默认时区。