PHP日期功能结果不正确

时间:2011-12-17 14:45:31

标签: php datetime

日期功能问题

输出:2011年12月17日星期日00:00

问题 小时和分钟始终显示00:00,有时候年份也不正确

输入 date('Y-m-d H:i:s',time());

功能

public function perfect_date_format($date) {
    $dated = str_replace(array(" ", ":"), "-", $date);
    list($year, $month, $day, $hour, $minute) = explode("-", $date);
    $niceday = @date("H:ia \o\\n\ l, F jS, Y", mktime($hour, $minute, 0, $month, $day, $year));
    return $niceday;
  }

2 个答案:

答案 0 :(得分:3)

你有一个错字。 explode()的第二个参数应为$dated,而不是$date。如果这样做,则正确显示时间。

<?php
function perfect_date_format($date) {
    $dated = str_replace(array(" ", ":"), "-", $date);
    list($year, $month, $day, $hour, $minute) = explode("-", $dated);
    $niceday = @date("H:ia \o\\n\ l, F jS, Y", mktime($hour, $minute, 0, $month, $day, $year));
    return $niceday;
}

echo perfect_date_format('2011-12-17 03:45:00') . "\n";
?>

输出:

03:45am on Saturday, December 17th, 2011

顺便说一句:在上面的代码中移除error suppressor operator(即@)是安全的。它只是简单地抑制了由上面提到的错误引起的错误或警告。现在修复了错误,@没有做任何事情。

答案 1 :(得分:1)

在不知道你传递给perfect_date_format的内容的情况下,很难知道如何更正你的代码,但我会猜测并假设strtotime了解如何解析你的{{} 1}}:

$date

如果这不起作用,请提供您传递的数据格式为public function perfect_date_format($date) { $time = strtotime($date); return date("H:ia \o\\n\ l, F jS, Y", $time); }