Excel 2007ファイルの内容をMySQLデータベースにインポートしていますが、スプレッドシートの日付フィールドはカスタムの日付形式(dd-mmm-yy)です。クライアントがアップロードするため、これをテキストに変更することはできません。ファイルの内容をインポートすると、日付が数値として挿入されます(例:2009年1月12日ではなく40978)。フィールドのデータベーステーブル形式を変更しても、その形式が優れているため効果がないことは知っていますが、これを回避する方法を知っている人はいますか?スプレッドシートの形式を変更せずに?
4259 次
2 に答える
4
PHPExcel_Shared_Date :: ExcelToPHP()やPHPExcel_Shared_Date :: ExcelToPHPObject()などのPHPExcelの組み込み変換メソッドを使用して、日付値をそれぞれPHP/UnixタイムスタンプまたはPHPDateTimeオブジェクトに変換します。
次に、適切な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 に答える