使用php更改日期格式

时间:2014-07-21 11:42:06

标签: php date datetime

我希望通过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

任何帮助请,我真的很奇怪我的代码返回空值,如果可能请告诉我我的问题。我很期待很快看到您的回复!

谢谢!

6 个答案:

答案 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');

请参阅live demo on eval.in


有关增强功能

如果您将片段扩展到一点以上,您还可以检查无效输入:

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;

Demo

答案 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