提问人:Dev devovs 提问时间:10/28/2023 最后编辑:Dev devovs 更新时间:11/4/2023 访问量:36
DateTime() 和 IntlDateFormatter 转换时区时的时间不同
DateTime() and IntlDateFormatter diffrent hours when convert timezone
问:
例:
$date = new DateTime('2023-09-08 06:00:00.0', new DateTimeZone('UTC')); // USER's timezone
echo $date->format('Y-m-d H:i:s');
$formatter = new IntlDateFormatter(
'en',
IntlDateFormatter::SHORT,
IntlDateFormatter::SHORT,
'CST',
IntlDateFormatter::GREGORIAN,
'YYYY-MM-dd HH:mm'
);
echo '</br>';
echo $formatter->format($date );
echo '</br>';
$date->setTimezone(new DateTimeZone('CST'));
echo $date->format('Y-m-d H:i:s');
输出:
2023-09-08 06:00:00
2023-09-08 01:00
2023-09-08 00:00:00
为什么结果不同,哪一个是正确的?
答:
1赞
TSCAmerica.com
11/4/2023
#1
在提供给 的模式中,您使用的是表示“周年”的“”。您应该使用“”来表示日历年。IntlDateFormatter
YYYY
yyyy
$date = new DateTime('2023-09-08 06:00:00.0', new DateTimeZone('UTC')); // USER's timezone
echo $date->format('Y-m-d H:i:s');
$formatter = new IntlDateFormatter(
'en',
IntlDateFormatter::SHORT,
IntlDateFormatter::SHORT,
'America/Chicago', // Use a full time zone identifier
IntlDateFormatter::GREGORIAN,
'yyyy-MM-dd HH:mm' // Use 'yyyy' instead of 'YYYY'
);
echo '</br>';
echo $formatter->format($date );
echo '</br>';
$date->setTimezone(new DateTimeZone('America/Chicago'));
echo $date->format('Y-m-d H:i:s');
评论
America/Chicago