【发布时间】:2021-07-08 12:39:23
【问题描述】:
我试图弄清楚为什么日期函数不尊重默认的 php 时区。 这是我的测试脚本:
<?php
echo( "date_default_timezone_get: " . date_default_timezone_get(). "\n" );
echo( "date: " . date(DATE_RFC2822) . "\n" . "gmdate: " . gmdate(DATE_RFC2822) . "\n" );
echo( "date_default_timezone_set( 'UTC' ): " . date_default_timezone_set( 'UTC' ) . "\n" );
echo( "date: " . date(DATE_RFC2822) . "\n" . "gmdate: " . gmdate(DATE_RFC2822) . "\n" );
echo( "date_default_timezone_get: " . date_default_timezone_get() );
exit;
它的输出是:
date_default_timezone_get: Europe/Rome
date: Thu, 08 Jul 2021 14:30:40 +0200
gmdate: Thu, 08 Jul 2021 12:30:40 +0000
date_default_timezone_set( 'UTC' ): 1
date: Thu, 08 Jul 2021 14:30:40 +0200
gmdate: Thu, 08 Jul 2021 12:30:40 +0000
date_default_timezone_get: UTC
如您所见,当我将默认时区设置为 UTC 时,日期函数不会改变它的输出
我在 debian 10 机器上使用 php fpm 7.4
> php -v
PHP 7.4.20 (cli) (built: Jun 4 2021 23:17:27) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.20, Copyright (c), by Zend Technologies
【问题讨论】: