0

我有一个“生日”的输入字段我正在使用一个javascript弹出窗口,它以以下格式返回日期“MM-DD'YYYY”,当我在插入代码的输入字段中回显值时,它会正确显示,但是当我使用

$c_birthday = $_POST['dateBorn'];
$birth=date('Y.m.d',strtotime($c_birthday));

如果我回显 $c_birthday,它会正确显示值,例如“10-02-2012”,但是当我回显 $birthday 时,它会显示 2012-02-10,它正在转换日期和月份,我尝试使用 'Ymd ' 我得到了相同的结果。

有我应该看的设置吗?

4

1 回答 1

4

来自 PHP 文档

笔记:

m/d/y 或 dmy 格式的日期通过查看各个组件之间的分隔符来消除歧义:如果分隔符是斜杠 (/),则假定为美式 m/d/y;而如果分隔符是破折号 (-) 或点 (.),则假定为欧洲 dmy 格式。

为避免潜在的歧义,最好尽可能使用 ISO 8601 (YYYY-MM-DD) 日期或 DateTime::createFromFormat()。

为了避免如上所述的潜力ambiguity,您可以使用:

$dt = DateTime::createFromFormat("m-d-Y", $c_birthday);
$dt->format("Y.m.d");
于 2012-10-17T14:41:18.460 回答