web-dev-qa-db-ja.com

date()メソッド、「正しくない数値が検出された」は、$ _ POSTで渡された日付をフォーマットしたくない

残念ながら、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()で日付をフォーマットできないのですか?

ありがとう!

21
Prefix

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
_
53
Amal Murali