ユーザーが URL と日付の .csv をアップロードできるページがあります。フォーマットは次のようになります。
http://www.google, 1/05/2013
http://www.yahoo, 1/04/2013
次に、ファイルを開き、ファイルを読み取り、他の用途のためにデータベースに入れます。
何らかの方法でさまざまな日付形式を処理するスクリプトが必要です。正規表現または文字列の分割などである可能性があります。
これまでに渡されたフォーマットは
month/day/year
day/month/year
year-day-month
データベースに挿入するために、誰かが一貫して同じ日付形式に私に与えた日付を変換できる必要があります。
現在、日付が米国形式(月/日/年)であるかどうかを確認するこの機能があります。
protected function checkDate($handle) {
$europeanDateFormat = false;
while (($row = fgetcsv($handle, 1000)) !== false) {
$dateChunks = explode("/", $row[1]);
if (isset($dateChunks[0]) && $dateChunks[0] > 12) {
$europeanDateFormat = true;
break;
} else if (isset($dateChunks[1]) && $dateChunks[1] > 12) {
$europeanDateFormat = false;
break;
}
}
rewind($handle);
return $europeanDateFormat;
}
ご覧のとおり、アップロードされたときにダッシュを処理できませんでした。
protected function makeDateAmerican($date) {
$dateChunks = explode('/', $date);
$rawDate = $dateChunks[1] . '/' . $dateChunks[0] . '/' . $dateChunks[2];
return date('Y-m-d', strtotime($rawDate));
}
さらに、このスクリプトは長い形式と並べ替え形式を処理する必要があります。
month = 1 or 01
day = 1 or 01
year = 13 or 2013
最後に、すべての日付を stringtotime 関数の同じ形式にする必要があります。
date('Y-m-d', strtotime($dateString));