在 Excel 中格式化日期字段时出现问题,但通过 PHP 代码格式化为文本形式

Problems formatting a date field in Excel, but formatted in text form via PHP code

提问人:Daniel Lacerda 提问时间:11/1/2023 更新时间:11/1/2023 访问量:35

问:

在我的Excel中,有一个列存储了所有客户注册日期。但是,此列中这些单元格中的某些日期采用文本格式。换句话说,例如日期“07/01/2022”正在转换为字符串值“44743”。在我的 PHP 代码中,我使用 SimpleXLS 库导入电子表格,但由于日期格式不同,当我在数据库中注册它们时,它们会产生值 1970-01-01。我想问一下是否有人知道,即使我在 php 中收到“44743”,也有一些方法可以通过代码将此数字转换为“07/01/2022”的原始日期。

文本格式的日期...

下面是我尝试格式化值“44743”的代码,但它给出的结果为“06/30/2022”而不是“07/01/2022”......


//$dateValue - It is equal to: "44743" but the original value in Excell is "07/01/2022".

$timestamp = ($dateValue - 25569) * 86400;
$dateFormat = date("d/m/Y", $timestamp);
echo $dateFormat ;

我也试过了,但没有用......

//$dateValue - It is equal to: "44743" but the original value in Excell is "07/01/2022".

$timestamp = strtotime("1900-01-01") + ($dateValue - 2) * 24 * 60 * 60;
$dateFormat = date("d/m/Y", $timestamp);
echo $dateFormat ;
PHP 日期 验证 excelLibrary

评论

0赞 ADyson 11/1/2023
很确定这之前已经回答过了......到目前为止,您研究或尝试了什么?你认为我们需要再次回答这个问题有什么理由吗?参见 如何提问
0赞 ADyson 11/1/2023
P.S. 无论如何,你的代码的两个版本都已经工作了:3v4l.org/ei9P53v4l.org/kkYP3。目前尚不清楚您认为问题出在哪里,或者您如何得出它不起作用的结论。我只假设当你测试它时,它实际上并不包含你所声称的价值,而且你在继续测试之前忽略了验证这一点。如果您不同意,请向我们提供该问题的最小可重现示例 - 即一些实际演示问题的真实代码和数据 - 以便我们为您提供帮助。$dateValue
0赞 Daniel Lacerda 11/1/2023
如果之前有答案,我没有找到答案,所以我现在问。我想问你,你是否在 Stack Overflow 上有一个指向这个主题的链接,它对我的问题有一个可能的答案。实际上,互联网上关于 SimpleXLS 的话题很少......
0赞 ADyson 11/1/2023
你看过我先发布的链接吗?有很多 Stackoverflow 主题(以及其他站点)都涵盖了这种情况。它似乎与 SimplelXLS 没有特别的关系 - 您只需要将从 Excel 收到的数字转换为格式化日期,这是一个很好理解的过程。但正如我也向你展示的那样,无论如何似乎都没有真正的问题,因为你的代码已经在使用你所说的你正在测试的值来工作。
1赞 Daniel Lacerda 11/2/2023
你对时区的看法是对的,没错。我的解决方案基本上是在此代码形成的日期之后提前一天,以保持与原始日期相同。我注意到,对电子表格中的所有日期执行此操作时,它们都保持不变,因此这是一个明确的解决方案。

答: 暂无答案