0

重複の可能性:
mm-dd-yyyy hh:mmでstrtotimeが失敗する

以下に示すような日付が入力されていますが、DateTime関数では許可されません。

            $start = new DateTime('13/10/2012');
            echo $start->format("Y-m-d");

'10/13/2012'を使用していても、他のすべての方法を使用できますが、日付を受け取る形式であるため、変更できません。

何か案は?

ありがとう

4

3 に答える 3

1

DateTime::createFromFormatのように試してください

$start = DateTime::createFromFormat('d/m/Y', '13/10/2012');
于 2012-06-26T08:26:31.220 に答える
1

createFromFormat()を試しましたか?

$start = DateTime::createFromFormat('d/m/Y', '13/10/2012');
于 2012-06-26T08:26:58.700 に答える
1

ドキュメントによると、特定の形式の日付のみを受け入れます。そのうちの1つは「アメリカの月、日、年」です。これは、月として13を指定すると明らかに失敗します。

私は常に、あいまいな形式の日付を使用しないようにしています。主にコード内で「2012-10-13」を使用し、ユーザー向けの日付には「2012年10月13日」を使用します。どちらも、私が経験した日付フォーマットAPIによって確実に解析できます。

しかし、あいまいな形式で作業することを余儀なくされた場合、PHPの組み込みAPIに依存するのではなく、手動で解析します。これは、それが何をするかを完全に理解しているためです。例えば:

list($day, $month, $year) = preg_split('/[^0-9]+/', '13/10/2012');
$start = new DateTime("$year-$month-$day");
于 2012-06-26T08:32:39.247 に答える