PHP での日付形式の変換
PHP で日付をある形式から別の形式に変換する必要がある場合があります。 PHP には日付操作用の関数がいくつか用意されていますが、そのプロセスと潜在的な落とし穴を理解することが重要です。
次のシナリオを考えてみましょう。「y-m-d-h-i-s」形式の日付があり、それを次の形式に変換したいとします。 「Y-m-d H:i:s」形式。通常は、strtotime() を使用して文字列をタイムスタンプに変換し、それを date() に渡します。ただし、あなたの場合、strtotime() は false を返し、「1970-01-01 00:00:00」という間違った日付が残ります。
問題は入力文字列の形式にあります。 strtotime() は、有効なタイムスタンプまたは認識できる形式の文字列を期待します。残念ながら、「y-m-d-h-i-s」は認識される形式の 1 つではありません。
ソリューション
PHP 5.3 以降
PHP 用5.3 以降では、推奨される解決策は次のとおりです。 DateTime::createFromFormat()。この関数を使用すると、date() 構文を使用して正確なマスクを指定し、受信文字列日付を解析できます。あなたの場合、コードは次のようになります。
$datetime = DateTime::createFromFormat('y-m-d-h-i-s', $old_date); $new_date = $datetime->format('Y-m-d H:i:s');
PHP 5.2 以前
PHP 5.2 以前では、要素 (年) を手動で解析します。 、月、日、時、分、秒)substr()を使用して結果をmktime()にフィードします。
ただし、このアプローチはより面倒です。 strftime() が理解できる、さまざまな日付入力形式をサポートする別の形式を使用することをお勧めします。たとえば、次のコードは機能します:
$old_date = date('l, F d y h:i:s'); $old_date_timestamp = strtotime($old_date); $new_date = date('Y-m-d H:i:s', $old_date_timestamp);
以上がPHP で「y-m-d-h-i-s」日付文字列を「Y-m-d H:i:s」に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。