我有输入框以获取mm-dd-yyyy格式的值。所以当我得到日期时,我尝试将其转换为YYYY-MM-DD格式。但它不起作用。
例如:
<?
$birthdate="08-13-2000";
$date=date('Y-m-d',strtotime($birthdate));
echo $date;
?>
。
输出为1970-01-01
但是如果我给了13-08-2000
我得到了2000-08-13
。I dont want to split
。因为在我的应用程序中,我在很多这样的地方使用过。但我认为strtotime
甚至将它转换为unix时间戳格式无论价值如何。这就是我尝试做的原因。我理解或做什么错了?
提前谢谢。
答案 0 :(得分:4)
试试这个:
$date = explode("-", "08-13-2000"); // input MM-DD-YYYY
$time = mktime(0, 0, 0, $date[0], $date[1], $date[2]); // to time
$date = date('Y-m-d', $time); // transform to Y-m-d
echo $date; // output YYYY-MM-DD
如果你在很多地方使用它,请创建一个函数():
function transformDate($input)
{
$date = explode("-", $input);
$time = mktime(0, 0, 0, $date[0], $date[1], $date[2]);
$date = date('Y-m-d', $time);
return $date;
}
echo transformDate("08-13-2000");
答案 1 :(得分:4)
strtotime()将划分短划线的日期解析为dd-mm-yyyy。您需要将生日输入为“08/13/2000”。如果您无法更改输入的预期分隔符,str_replace应该为此完成工作。
将来自php.net
的frontiermedia dot net dot au的分隔符差异归功于sam编辑:如果您需要进行替换,请提供一些示例代码:
$birthdate = '08-13-2000';
$birthdate = str_replace('-','/',$birthdate);
$date = date('Y-m-d',strtotime($birthdate));
echo $date;
否则它只是
$birthdate = '08/13/2000';
... snip ...