2011-07-23 3 views
-1

は私がなぜPHPののstrtotime関数

$date = "12-22-2011"; 

echo $newDateFormat = date("Y-m-d", strtotime($date)); 

// Output 1970-01-01 
// But when i replace "-" with "/" I get proper output 
$date = "12/22/2011"; 

echo $newDateFormat = date("Y-m-d", strtotime($date)); 

// Output 2011-12-22 

次私が持っている別の の形式に日付を変換するためのPHPのstrtotimeの機能を使用していますか? 何かを受け入れ、適切な日付形式に変換する他の関数がありますか?このようdd-mm-yyyymm-dd-yyyyようなフォーマットを使用して

+0

私はあなたの例をhttp://writecodeonline.com/php/で試して、最初のエコーで '2019-04-03'を得ました。 –

答えて

4

strtotimeドキュメントから:M/D/YまたはDMY形式で

日付は、様々な構成要素間のセパレータを見て非曖昧化された:セパレータはスラッシュ(/)である場合、次いでアメリカのm/d/yが仮定されている。セパレータがダッシュ( - )またはドット(。)の場合は、ヨーロッパのd-m-y形式が使用されます。

本質的に、ハイフネーションされた日付は、d-m-yであり、決してm-d-yではないと仮定される。

カスタマイズされた解析の場合は、DateTime::createFromFormat()を使用してください。

2

は非常に安全ではありません:strtotime()あなたがを使用するもののどちらを確実に知ることができない(例えば約06-11-2011だと思う?それは6月中に、または11月にある)

strtotime()では、一般にyyyy-mm-dd形式を使用する方がよいでしょう。


特定の既知の形式で日付を解析する場合は、DateTime::createFromFormat()を使用する必要があります。これはPHP> = 5.3でのみ使用可能です。