1

Excel 2007ファイルの内容をMySQLデータベースにインポートしていますが、スプレッドシートの日付フィールドはカスタムの日付形式(dd-mmm-yy)です。クライアントがアップロードするため、これをテキストに変更することはできません。ファイルの内容をインポートすると、日付が数値として挿入されます(例:2009年1月12日ではなく40978)。フィールドのデータベーステーブル形式を変更しても、その形式が優れているため効果がないことは知っていますが、これを回避する方法を知っている人はいますか?スプレッドシートの形式を変更せずに?

4

2 に答える 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 に答える