【发布时间】:2018-05-03 09:06:45
【问题描述】:
为什么我使用“IntlDateFormatter”时会有这个时差?
<?php
// php v7.1
$pattern = 'yyyy-MM-dd HH:mm:ss';
$timezone = "Europe/Budapest";
$inputDateTimeStr = '1890-01-01 00:00:00';
$locale = 'hu_HU';
$intlDateFormatter = new \IntlDateFormatter( $locale, \IntlDateFormatter::MEDIUM, \IntlDateFormatter::SHORT, \IntlTimeZone::createTimeZone($timezone), \IntlDateFormatter::GREGORIAN, $pattern
);
$dateTime = new \DateTime($inputDateTimeStr);
$dateTime->setTimezone(new \DateTimeZone($timezone));
$outputDateTimeStr = $intlDateFormatter->format($dateTime->getTimestamp());
print ' in: ' . $inputDateTimeStr
. ' out: ' . $outputDateTimeStr // string(19) "1890-01-01 00:16:20"
. ' diff: ' . ( strtotime($outputDateTimeStr) - strtotime($inputDateTimeStr) ) . ' seconds';
输出:输入:1890-01-01 00:00:00 输出:1890-01-01 00:16:20 差异:980 秒
【问题讨论】:
-
为什么? $ php intl_test.php 输入:1890-09-30 23:43:40 输出:1890-09-30 23:43:40 差异:0 秒 $ php intl_test.php 输入:1890-09-30 23:43:38出:1890-09-30 23:59:58 差异:980 秒
标签: php datetime datetime-format