我希望通过php更改日期格式,
我的日期格式为d/m/Y
,我想更改为Y-m-d
我看过this question 但对于我的情况,我仍然得到一个空值。
EX:$_REQUEST["date_moc"]='21/07/2014';
我尝试echo strtotime($_REQUEST["date_moc"]);
,但屏幕上没有显示任何内容。
当我echo date("Y-m-d",strtotime($_REQUEST["date_moc"]));
时,我得到1970-01-01
任何帮助请,我真的很奇怪我的代码返回空值,如果可能请告诉我我的问题。我很期待很快看到您的回复!
谢谢!
答案 0 :(得分:1)
最简单的方式
$_REQUEST["date_moc"]='21/07/2014';
$explode = explode('/', $_REQUEST["date_moc"]);
list($day,$month,$year) = $explode;
$new_date = "$year-$month-$day";
echo $new_date;
答案 1 :(得分:1)
使用DateTime::createFromFormat()
$date = DateTime::createFromFormat('d/m/Y', '21/07/2014');
echo $date->format('Y-m-d');
有关增强功能
如果您将片段扩展到一点以上,您还可以检查无效输入:
if(($date = DateTime::createFromFormat('d/m/Y', '21//2014')) !== false)
echo $date->format('Y-m-d');
else
echo 'Invalid format';
但这只是一种模式检查,类似于正则表达式
/(\ d {1,2})/(\ d {1,2})/(\ d {4})/
这仍然允许用户输入如下内容:
50/13/2014
要检查提供的日期是否有效或无效,请检查DateTime::getLastErrors()
的内容。它会详细告诉你出了什么问题。对于上面的例子,你会得到这样的东西:
array(4) {
["warning_count"]=>
int(1)
["warnings"]=>
array(1) {
[10]=>
string(27) "The parsed date was invalid"
}
["error_count"]=>
int(0)
["errors"]=>
array(0) {
}
}
因此,根据这些信息,我们可以再次扩展片段。这导致我们得到类似的结果:
$date = DateTime::createFromFormat('d/m/Y', '50/13/2014')
if($date !== false) {
$dateLastErrors = $date->getLastErrors();
if($dateLastErrors['error_count'] > 0 || $dateLastErrors['warning_count'] > 0)
echo 'Invalid date';
else
echo $date->format('Y-m-d');
} else
echo 'Invalid date format';
}
最终将根据格式验证确定日期。
答案 2 :(得分:1)
试试这个: - Working Demo
$date = explode('/',str_replace('-','/',$_REQUEST["date_moc"]));
$updated_date = $date[2].'-'.$date[1].'-'.$date[0];
echo $updated_date;
答案 3 :(得分:1)
$_REQUEST["date_moc"]='21/07/2014';
$original_date = explode('/', $_REQUEST["date_moc"]);
$year = $original_date[2]; // 2014
$month = $original_date[1]; // 07
$day = $original_date[0]; // 21
$date = $year.'/'.$month.'/'.$day;
echo $date;
答案 4 :(得分:0)
$date = $_REQUEST["date_moc"];// OR $date ='21/07/2014'; avoid $_REQUEST["date_moc"]='21/07/2014';
echo date('Y-m-d', strtotime($date));
答案 5 :(得分:0)
最简单的方式
$date ='21/07/2014';
$date = str_replace("/", "-", $date);
echo date("Y-m-d",strtotime($date));
<强> Working Demo 强>