strotime()
を使用する場合
有効な日時形式
を使用していることを確認する必要があります 。それ以外の場合は、strtotime()
false
を返します または 予想外の値を与えます。
XX / XX / XXXX形式を使用する日付は、米国形式であると見なされます。つまり、最初の2桁は月を表し、次の2桁は日を表し、最後の4桁は年を表します。ダッシュを使用する場合、日付はヨーロッパ形式であると見なされます。例:
04/18/2017 = April 18, 2017
12/18/2017 = December 18, 2017
18-04-2017 = April 18, 2017
18-12-2017 = December 18, 2017
誤って曜日と月を切り替えた場合strtotime()
日付が無効であるため、falseを返します。
18/04/2017 // error
18/12/2017 // error
04-18-2018 // error
12-18-2017 // error
上記の例は単純明快です。ただし、日付があいまいになる可能性がある場合は、問題が発生する可能性があります。例:
04/12/2017 = April 12, 2017
12/04/2017 = December 4, 2017
04-12-2017 = December 4, 2017
12-04-2017 = April 12, 2017
上記の例では、日と月を切り替えることで有効な日付を取得しているため、アプリケーションで予期しない結果が生じる可能性があります。これらの潜在的な問題を解決するには、 DateTime::createFromFormat()
日付広告を解析するには、 DateTime()
を返します。
Unixタイムスタンプを取得できるオブジェクト
、日付を別の形式に変換
、または他のDateTime
と比較するために使用します オブジェクト。
// Parse US date format
$date1 = DateTime::createFromFormat('m/d/Y', '04/18/2017');
// Get Unix timestamp of 1493581268
$timestamp = $date1->getTimestamp();
// Parse European date format
$date2 = DateTime::createFromFormat('d-m-Y', ''18-04-2017);
// Get MySQL format (ISO-8601) of 2017-04-18
$mysqlDate = $date2->format('Y-m-d');
関連項目:
特定のケースでは、次のコードが機能します:
$date = $date1 = DateTime::createFromFormat('m/d/Y', '20/02/2000');
$D->query = $date->format('Y-m-d'); // 2000-02-20