1

我将 Excel 2007 文件的内容导入 MySQL 数据库,但电子表格中的日期字段是自定义日期格式 (dd-mmm-yy)。我无法将其更改为文本,因为客户端将上传它,所以这是不可行的。当我导入文件的内容时,它会将日期作为数字插入,例如 40978 而不是 09 年 1 月 12 日。我知道更改该字段的数据库表格式将没有任何效果,因为它的 excels formatitng 但有人知道解决这个问题的方法吗?不改变电子表格的格式?

4

2 回答 2

4

使用 PHPExcel 的内置转换方法,如 PHPExcel_Shared_Date::ExcelToPHP() 或 PHPExcel_Shared_Date::ExcelToPHPObject() 将日期值分别转换为 PHP/Unix 时间戳或 PHP DateTime 对象。

然后,您可以使用适当的 PHP date() 或 $DateTimeObject->format() 函数将其格式化为 yyyy-mm-dd 格式字符串。

编辑

$excelDateValue = 40978;

$PHPTimeStamp = PHPExcel_Shared_Date::ExcelToPHP($excelDateValue);
echo $PHPTimeStamp,'<br />';
echo date('Y-m-d',$PHPTimeStamp),'<br />';

或者

$excelDateValue = 40978;

$PHPDateTimeObject = PHPExcel_Shared_Date::ExcelToPHPObject($excelDateValue);
echo $PHPDateTimeObject->format('Y-m-d'),'<br />';

顺便说一句,40978 的 Excel 日期戳是 2012 年 3 月 10 日(基于 Excel Windows 1900 日历)或 2016 年 3 月 11 日(基于 Excel Mac 1904 日历)。2009 年 1 月 12 日是 Excel 时间戳 39825(基于 Excel Windows 1900 日历)。

于 2011-03-23T13:55:08.767 回答
0

使用代码 thar 将字符串日期转换为 mysql 格式的日期。就像是:

$ma=array("jan"=>"-01-","feb"=>"-02-","mar"=>"-03-", etc );
$month=$ma[strtolower(substr($exceldate,3,3))];
$newdate="20".substr($exceldate,7,2).$month.substr($exceldate,0,2);
于 2011-03-23T13:59:00.500 回答