/*
|
|
|
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
|
|
|
} |