首页 > 解决方案 > PHP 日期读取问题,我得到的是数字而不是日期

问题描述

我想从 Excel 文件中读取日期,但是当我将日期打印到屏幕上时,我只能看到一个数字而不是日期,为什么?

Excel文件:

Excel文件

结果:

结果

标签: phpexceldate

解决方案


Excel 将日期视为数字,数字表示 1899 年 12 月 31 日之后的天数。因此,第 1 天是 1900 年 1 月 1 日,第 43102 天是 2018 年 1 月 3 日。但是等等……您的数据显示 2018 年 1 月 2 日!事实证明,微软认为 1900 年是闰年,因此第 60 天是 1900 年 2 月 29 日,而在现实世界中实际上是 3 月 1 日。无论如何,这意味着对于 1900 年 2 月 28 日之后的日期,你需要减去一个从天数得到正确的日期。因此,要将 Excel 日期数转换为 PHP 中的日期,请使用以下代码:

$dayval = 43102;    // you would read from your file here
$date = new DateTime('1899-12-31');
$date->modify("+$dayval day -1 day");
echo $date->format('Y-m-d');

输出:

2018-01-02

推荐阅读