ホームページ > バックエンド開発 > PHPチュートリアル > PHP で「y-m-d-h-i-s」日付文字列を「Y-m-d H:i:s」に変換するにはどうすればよいですか?

PHP で「y-m-d-h-i-s」日付文字列を「Y-m-d H:i:s」に変換するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-24 18:32:34
オリジナル
544 人が閲覧しました

How Can I Convert a 'y-m-d-h-i-s' Date String to 'Y-m-d H:i:s' in PHP?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート