Excel menyimpan nilai tanggal sebagai jumlah hari "nyata" sejak tanggal dasar, yang dapat berupa 1 Januari 1900 (default untuk Excel versi Windows) atau 1 Januari 1904 (default untuk Excel versi Mac):waktunya adalah bagian pecahan, jadi tengah hari pada tanggal tertentu 0,5 lebih besar dari tengah malam. Untuk menambah kesengsaraan, 29 Februari 1900 adalah tanggal yang valid untuk kalender Windows 1900.
Dengan asumsi kalender Windows 1900:
function ExcelToPHP($dateValue = 0) {
$myExcelBaseDate = 25569;
// Adjust for the spurious 29-Feb-1900 (Day 60)
if ($dateValue < 60) {
--$myExcelBaseDate;
}
// Perform conversion
if ($dateValue >= 1) {
$utcDays = $dateValue - $myExcelBaseDate;
$returnValue = round($utcDays * 86400);
if (($returnValue <= PHP_INT_MAX) && ($returnValue >= -PHP_INT_MAX)) {
$returnValue = (integer) $returnValue;
}
} else {
$hours = round($dateValue * 24);
$mins = round($dateValue * 1440) - round($hours * 60);
$secs = round($dateValue * 86400) - round($hours * 3600) - round($mins * 60);
$returnValue = (integer) gmmktime($hours, $mins, $secs);
}
// Return
return $returnValue;
} // function ExcelToPHP()
jika basis Mac 1904, ganti
$myExcelBaseDate = 25569;
// Adjust for the spurious 29-Feb-1900 (Day 60)
if ($dateValue < 60) {
--$myExcelBaseDate;
}
dengan
$myExcelBaseDate = 24107;
Ini akan mengembalikan nilai tanggal/waktu PHP (tanggal dasar standar 1970), yang kemudian dapat Anda format sesuai keinginan menggunakan date();