我正在将Excel 2007文件的内容导入MySQL数据库,但电子表格中的日期字段是自定义日期格式(dd-mmm-yy)。我无法将其更改为文本,因为客户端将上传它,因此不可行。当我导入文件的内容时,它会将日期作为数字插入,例如40978而不是09年1月12日。我知道更改字段的数据库表格格式将没有效果,因为它的excels formatitng但有没有人知道解决这个问题的方法?不改变电子表格的格式?
答案 0 :(得分: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 />';
顺便提一下,Excel的日期戳40978是2012年3月10日(基于Excel Windows 1900日历)或2016年3月11日(基于Excel Mac 1904日历)。 09年1月12日的Excel时间戳为39825(基于Excel Windows 1900日历)。
答案 1 :(得分:0)
使用将字符串日期转换为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);