PHP strtotime 结果在 php7.3.2 和 php7.3.1 中不同
PHP strtotime result is diffent in php7.3.2 and php7.3.1
不到1900,多了是正常的。
php 版本为 7
示例:
date_default_timezone_set('PRC');
$sbegintime = strtotime('1900-01-01 00:00:00');
var_dump($sbegintime);exit;
php7.3:-2209017600
php7.2:-2209017943
为什么?
php strtotime 文档中的这篇注释可能对您有所帮助。
The valid range of a timestamp is typically from Fri, 13 Dec 1901
20:45:54 UTC to Tue, 19 Jan 2038 03:14:07 UTC. (These are the dates
that correspond to the minimum and maximum values for a 32-bit signed
integer.)
Prior to PHP 5.1.0, not all platforms support negative timestamps,
therefore your date range may be limited to no earlier than the Unix
epoch. This means that e.g. dates prior to Jan 1, 1970 will not work
on Windows, some Linux distributions, and a few other operating
systems.
famous SO question 与中国的一个历史事件有关,在 1928 年元旦,时钟拨慢了 352 秒,这意味着处理该时间之前的日期可能会得到意想不到的结果。 显然 PHP 更新了该时区的时区偏移量(对于 1928 年以前的日期),从 +8:00 更新到 +8:05。 (我现在找不到的一些其他更改,但在链接的问题中提到了偏移量从 352 变为 343)。
/* php7.2 (+8:00) */
(new DateTime('1900-01-01 00:00:00', new DateTimezone("PRC")))->format(\DateTime::ATOM);
// 1900-01-01T00:00:00+08:00"
/* php7.3: (+8:05) */
(new DateTime('1900-01-01 00:00:00', new DateTimezone("PRC")))->format(\DateTimeInterface::ATOM);
// "1900-01-01T00:00:00+08:05"
php7.3 的变化并没有特别指出这个变化,但是如果你看一下 php7.2.12 的变化,它会说
"Upgraded timelib to 2017.08."
对于7.3.8它说
"Updated timelib to 2018.02."
由于 timelib 是支持 PHP DateTime 的基础库,因此在这些版本之间实施的更改是可行的,不幸的是我找不到更改日志。
不到1900,多了是正常的。 php 版本为 7 示例:
date_default_timezone_set('PRC');
$sbegintime = strtotime('1900-01-01 00:00:00');
var_dump($sbegintime);exit;
php7.3:-2209017600
php7.2:-2209017943
为什么?
php strtotime 文档中的这篇注释可能对您有所帮助。
The valid range of a timestamp is typically from Fri, 13 Dec 1901 20:45:54 UTC to Tue, 19 Jan 2038 03:14:07 UTC. (These are the dates that correspond to the minimum and maximum values for a 32-bit signed integer.)
Prior to PHP 5.1.0, not all platforms support negative timestamps, therefore your date range may be limited to no earlier than the Unix epoch. This means that e.g. dates prior to Jan 1, 1970 will not work on Windows, some Linux distributions, and a few other operating systems.
famous SO question 与中国的一个历史事件有关,在 1928 年元旦,时钟拨慢了 352 秒,这意味着处理该时间之前的日期可能会得到意想不到的结果。 显然 PHP 更新了该时区的时区偏移量(对于 1928 年以前的日期),从 +8:00 更新到 +8:05。 (我现在找不到的一些其他更改,但在链接的问题中提到了偏移量从 352 变为 343)。
/* php7.2 (+8:00) */
(new DateTime('1900-01-01 00:00:00', new DateTimezone("PRC")))->format(\DateTime::ATOM);
// 1900-01-01T00:00:00+08:00"
/* php7.3: (+8:05) */
(new DateTime('1900-01-01 00:00:00', new DateTimezone("PRC")))->format(\DateTimeInterface::ATOM);
// "1900-01-01T00:00:00+08:05"
php7.3 的变化并没有特别指出这个变化,但是如果你看一下 php7.2.12 的变化,它会说
"Upgraded timelib to 2017.08."
对于7.3.8它说
"Updated timelib to 2018.02."
由于 timelib 是支持 PHP DateTime 的基础库,因此在这些版本之间实施的更改是可行的,不幸的是我找不到更改日志。