excel日期格式转为Y-m-d H:i:s

/*
45686.118171296 是 Excel 中的一种日期格式,它表示自 1900 年 1 月 1 日以来的天数。这种格式是 Excel 默认的日期表示方式之一,称为“序列日期”。
45686 是自 1900 年 1 月 1 日以来的天数。
.118171296 是该天的时间部分,表示该天的部分时间小数部分表示一天中的时间,0.5 表示中午12点,0.25 表示早上6点等
如果没有小数点则为日期,有小数点则为日期时分秒,这里判断5位数字即为excel日期
*/
public function convertExcelDateToStandard($excelDate) {
// $excelDate = '45717.1';
// $excelDate = '55785';
// 假设你的 Excel 日期序列是 45686.118171296
// $excelDate = 45688.99681713;
// 转换为 Unix 时间戳
$unixTimestamp = ($excelDate - 25569) * 86400; // 86400 是一天的秒数
// 直接格式化为标准日期(使用 UTC 时区)
if(strstr($excelDate,".")){
$formattedDate = gmdate('Y-m-d H:i:s', $unixTimestamp);
}else{
$formattedDate = gmdate('Y-m-d', $unixTimestamp);
}
// 输出结果
return $formattedDate; // 输出2025-05-05 02:50:38
}

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: