Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php日期函数结果不正确_Php_Datetime - Fatal编程技术网

Php日期函数结果不正确

Php日期函数结果不正确,php,datetime,Php,Datetime,日期函数的问题 输出:2011年12月17日星期日上午00:00 问题 小时和分钟始终显示为00:00,有时年份也不正确 输入 日期('Y-m-d H:i:s',时间()) 功能 public function perfect_date_format($date) { $dated = str_replace(array(" ", ":"), "-", $date); list($year, $month, $day, $hour, $minute) = explode("-",

日期函数的问题

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

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

输入 日期('Y-m-d H:i:s',时间())

功能

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;
  }

在不知道传递给
perfect\u date\u format
的内容的情况下,很难知道如何更正代码,但我会做一个粗略的猜测,并假设它理解如何解析您的
$date

public function perfect_date_format($date) {
    $time = strtotime($date);
    return date("H:ia \o\\n\ l, F jS, Y", $time);
}

如果这不起作用,那么请提供您作为
$date

传递的数据的格式。如果不知道您传递给
perfect\u date\u format
的是什么,就很难知道如何更正您的代码,但我会做一个粗略的猜测,并假设您理解如何解析您的
$date

public function perfect_date_format($date) {
    $time = strtotime($date);
    return date("H:ia \o\\n\ l, F jS, Y", $time);
}

如果这不起作用,那么请提供您正在传递的数据格式,如您有输入错误。
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";
?>

顺便说一句:删除上面代码中的(即
@
)是安全的。它只是简单地抑制由上面识别的bug引起的错误或警告。既然bug已经修复,那么
@
就什么也没做了。

您有一个打字错误。
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";
?>

顺便说一句:删除上面代码中的(即
@
)是安全的。它只是简单地抑制由上面识别的bug引起的错误或警告。既然bug已经修复,那么
@
就什么也不做了。

输入是什么?您是否尝试过
strotime()
?能否提供您的示例输入?向我们显示输入$date字符串…输入是什么?您是否尝试过
strotime()
?您能提供您的示例输入吗?向我们展示输入的$date字符串…Nice catch@asah,您的回答保留了他的原始代码,而我完全重写了他的函数+1.我对这两种方法都投了赞成票,但我更喜欢
strotime()
方法,因为它允许更多不同的输入(取决于使用情况)。我还可能建议删除
date()
上的错误抑制器。我同意
strotime()
是一种更优雅的方法。有两种方法可以解决这样的问题。我的方法回答了“为什么我的代码不工作?”的问题,并回答了“做我正在尝试做的事情的最佳方式是什么?”。两者都有效,OP可以自由决定哪一个更好。@Jared Farrish:我也同意删除
@
操作符。它所服务的唯一目的是抑制由我在代码中识别的bug引起的错误或警告。现在这个bug已经修复了,它什么也没做。错误抑制器操作符通常只是掩盖问题,我个人会避免它。我把它留在了答案中,因为我只是想修复这个bug,而不是做任何让人分心的“增强”。我明白,这本身并不是批评。我不知道我是否会同意建议删除它会分散注意力或诸如此类,但在我看来,你对它为什么存在以及为什么应该忽略它的描述是整体答案的一部分。很好地抓住了@asah,你的回答保留了他的原始代码,而我完全重写了他的函数+1.我对这两种方法都投了赞成票,但我更喜欢
strotime()
方法,因为它允许更多不同的输入(取决于使用情况)。我还可能建议删除
date()
上的错误抑制器。我同意
strotime()
是一种更优雅的方法。有两种方法可以解决这样的问题。我的方法回答了“为什么我的代码不工作?”的问题,并回答了“做我正在尝试做的事情的最佳方式是什么?”。两者都有效,OP可以自由决定哪一个更好。@Jared Farrish:我也同意删除
@
操作符。它所服务的唯一目的是抑制由我在代码中识别的bug引起的错误或警告。现在这个bug已经修复了,它什么也没做。错误抑制器操作符通常只是掩盖问题,我个人会避免它。我把它留在了答案中,因为我只是想修复这个bug,而不是做任何让人分心的“增强”。我明白,这本身并不是批评。我不知道我是否会同意建议移除它会分散注意力或诸如此类的说法,但在我看来,你对它为什么存在以及为什么应该被忽略的描述是整体答案的一部分。