如何使日期格式在所有环境中保持一致
how to make date formating consistent in all envirnment
我正在使用 PHP 7.3.
我正在尝试将strtotime()
格式格式化为ISO格式,但结果占用了系统的时区,导致不同环境下的结果不一致。
$date = date('Y-m-d\TH:i:s'.substr((string)microtime(), 1, 4).'\Z',1585526400);
在 phpfiddle 中,输出为 2020-03-30T00:00:00.475Z
,在本地系统中为 2020-03-30T05:30:00.415Z
,在服务器中为 2020-03-30T05:00:00.415Z
。
如果我将代码更改为
$date = date(DATE_ISO8601, 1585526400);
phpfiddle 输出 2020-03-30T00:00:00+0000
,本地 2020-03-30T05:30:00+0530
和服务器 2020-03-30T05:00:00+0500
如何使它保持一致?
您可以明确设置时区。示例片段:
$date = new DateTime();
$date->setTimezone(new DateTimeZone('UTC'));
$date->setTimestamp(1585526400);
echo $date->format('Y-m-d\TH:i:s');
您可以通过在获取日期和时间时将时区设置为:
$dateTime = new DateTime('now', new DateTimeZone('UTC'));
$dateTime = $dateTime->format("y-m-d H:i:s");
echo $dateTime;
我正在使用 PHP 7.3.
我正在尝试将strtotime()
格式格式化为ISO格式,但结果占用了系统的时区,导致不同环境下的结果不一致。
$date = date('Y-m-d\TH:i:s'.substr((string)microtime(), 1, 4).'\Z',1585526400);
在 phpfiddle 中,输出为 2020-03-30T00:00:00.475Z
,在本地系统中为 2020-03-30T05:30:00.415Z
,在服务器中为 2020-03-30T05:00:00.415Z
。
如果我将代码更改为
$date = date(DATE_ISO8601, 1585526400);
phpfiddle 输出 2020-03-30T00:00:00+0000
,本地 2020-03-30T05:30:00+0530
和服务器 2020-03-30T05:00:00+0500
如何使它保持一致?
您可以明确设置时区。示例片段:
$date = new DateTime();
$date->setTimezone(new DateTimeZone('UTC'));
$date->setTimestamp(1585526400);
echo $date->format('Y-m-d\TH:i:s');
您可以通过在获取日期和时间时将时区设置为:
$dateTime = new DateTime('now', new DateTimeZone('UTC'));
$dateTime = $dateTime->format("y-m-d H:i:s");
echo $dateTime;