You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel日期数值44824转正常日期时PHP代码转换结果不符求助

问题排查及解决

核心问题分析

你用gmdate("Y-m-d", ($arr['excelDatas'][0]['date_hired'] - 25569) * 86400)转换得到的结果是正确的——Excel数值44824本身对应的日期就是2022-09-20,和你所说的原Excel显示的2022/08/08不符,说明问题出在Excel读取或数据库插入环节,而非转换代码。

具体原因及验证

  • Excel日期本质是数值:在Windows默认的1900日期系统下,2022/08/08对应的正确数值是44793,而非44824。你可以在Excel中输入44793并设置单元格格式为日期,会显示2022/08/08;输入44824则会显示2022/09/20。
  • 可能的出错点:
    • 读取Excel时误读了其他单元格数值,或使用的读取工具未正确识别日期格式(比如把带公式的单元格值当成原始日期值)。
    • Excel单元格的显示格式与实际存储值不符:比如单元格设置了自定义日期格式,或用公式强制显示为2022/08/08,但实际存储的是44824。

解决步骤

  1. 打开原Excel文件,选中显示2022/08/08的单元格,查看编辑栏的实际值:如果编辑栏显示44824,说明单元格是用格式或公式伪装的日期,需修正原始数据;如果编辑栏显示2022/08/08,切换到数值格式查看实际数值是否为44793。
  2. 检查PHP读取Excel的代码:确认使用的读取库(如PhpSpreadsheet)是否正确解析日期格式,是否开启了日期自动转换配置,避免将日期当作纯数值读取。
  3. 验证数据库插入前的数值:在插入数据库前打印$arr['excelDatas'][0]['date_hired']的值,确认是否为44793,若不是则说明读取环节已出错。

内容的提问来源于stack exchange,提问作者Michael Angelo Corral

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 11:55:17