4

日付形式をに変換するmm-dd-yyyy必要があります現在の日付形式が何であるかはわかりませんが、動的であるため、動的な日付形式が既にあるmm-dd-yyyy場合、date()関数は outout の下に戻ります

    $date='02-13-2011';
    echo date('m-d-Y',strtotime($date));

出力は

  01-01-1970

?>

http://codepad.org/AFZ6jel7

そのため、日付が既に入っているかどうかを確認してから、mm-dd-yyyy日付の書式設定を適用しないでください。これを行う他の方法はありますか?これらの関数または同様のもので別のパラメーターを渡している可能性があります。

ありがとう。

4

2 に答える 2

8

これが問題の原因であると強く疑っています。

m/d/y または dmy 形式の日付は、さまざまな構成要素間の区切り記号を調べることで明確になります。区切り記号がスラッシュ (/) の場合、アメリカの m/d/y と見なされます。一方、セパレータがダッシュ (-) またはドット (.) の場合は、ヨーロッパの dmy 形式が想定されます。

( strtotime のドキュメントに記載されています。)

ダッシュ区切りがあるため、dmy 形式を想定し、13 の月として解析するため、事実上失敗します。

PHP 開発者でなくても、頭の中で思いつくオプション:

  • 文字列の形式を明示的に指定できる関数がある場合は、それを使用してください。

    例えばDateTime::createFromFormat()

  • スラッシュを使用するようにフォーマットを変更してください
  • mdy の代わりに dmy を使用するようにフォーマットを変更します
于 2011-02-24T07:27:52.087 に答える
4

- を mdY の / に置き換えると役立ちます。

echo date('m-d-Y',strtotime(str_replace('-', '/', $date)));
于 2011-02-24T07:29:38.690 に答える