我正在用 PHP/Jquery 编写一些东西,允许用户从 Excel 上传 Excel 电子表格。然后它获取该电子表格中的数据并将每个单元格的值分配给一个变量,但由于某种原因,我很难处理日期。 Excel 中的任何日期都以数字形式出现,例如 41014
,而不是 04/15/2012
(就好像我要在 Excel 中将格式设置为 text
).
如何将其转换为 YYYY-MM-DD 格式,使其适合我正在使用的 mySQL 数据库的其余部分?我可以在 PHP 或 Jquery 中完成,但在 jQuery 中完成对我来说似乎更容易。
Excel 的单元格
04/15/2012
PHP 的echo json_encode($var);
`{dateReceived: 41014}`
jQuery 的 console.log(dateReceived);
41014
更新
我实际上无法得到这里提供的任何一个答案 - 我认为 php 答案最初有效,但由于某种原因我无法让它输出我需要的东西,但我发现了另一个简单的公式放入函数中。如果其他人正在寻找类似问题的答案,这就是我所做的:(其中 $dateValue 是 Excel 日期 41014
等...)
function convertDate($dateValue) {
$unixDate = ($dateValue - 25569) * 86400;
return gmdate("Y-m-d", $unixDate);
'where Y is YYYY, m is MM, and d is DD
}
最佳答案
直接取自 PHPExcel 日期处理代码:
public static function ExcelToPHP($dateValue = 0) {
if (self::$ExcelBaseDate == self::CALENDAR_WINDOWS_1900) {
$myExcelBaseDate = 25569;
// Adjust for the spurious 29-Feb-1900 (Day 60)
if ($dateValue < 60) {
--$myExcelBaseDate;
}
} else {
$myExcelBaseDate = 24107;
}
// 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()
根据需要设置 self::$ExcelBaseDate == self::CALENDAR_WINDOWS_1900 以指示您正在使用的 Excel 基准日历:Windows 1900 或 Mac 1904...最有可能是 1900
如果您想要一个 PHP DateTime 对象:
public static function ExcelToPHPObject($dateValue = 0) {
$dateTime = self::ExcelToPHP($dateValue);
$days = floor($dateTime / 86400);
$time = round((($dateTime / 86400) - $days) * 86400);
$hours = round($time / 3600);
$minutes = round($time / 60) - ($hours * 60);
$seconds = round($time) - ($hours * 3600) - ($minutes * 60);
$dateObj = date_create('1-Jan-1970+'.$days.' days');
$dateObj->setTime($hours,$minutes,$seconds);
return $dateObj;
} // function ExcelToPHPObject()
关于javascript - 将 Excel 的 "41014"日期转换为 PHP 或 JavaScript 中的实际日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30305688/