残念ながら、DateTime()
を使用することはできません。このプロジェクトが実行されているサーバーは、PHP v.5.2。
問題の行:
$aptnDate2 = date('Y-m-d', $_POST['nextAppointmentDate']);
次のエラーをスローします。
Notice: A non well formed numeric value encountered
var dumpを使用して、適切にフォーマットされていることを確認します。
var_dump($_POST['nextAppointmentDate']);
string(10) "12-16-2013"
php docs state 文字列ではなくタイムスタンプを取得します。しかし、私がするとき:
date('Y-m-d', strtotime($_POST['nextAppointmentDate']));
その後 var_dump
結果、私はこれを得る:
string(10) "1969-12-31"
なぜこの日付値とstrtotime()で日付をフォーマットできないのですか?
ありがとう!
strtotime()
のドキュメントから:
M/d/yまたはd-m-y形式の日付は、さまざまなコンポーネント間の区切り文字を調べることで明確になります。区切り文字がスラッシュ(/)の場合、アメリカのm/d/yが想定されます。一方、セパレータがダッシュ(-)またはドット(。)の場合、ヨーロッパのd-m-y形式が想定されます。
日付文字列には、_12-16-2013
_があります。 _16
_は有効な月ではないため、strtotime()
はfalse
を返します。
DateTimeクラスを使用できないため、 str_replace()
を使用して_-
_を_/
_に手動で置き換えて、日付文字列をstrtotime()
理解:
_$date = '2-16-2013';
echo date('Y-m-d', strtotime(str_replace('-','/', $date))); // => 2013-02-16
_