【问题标题】:Display php time if not 00:00:00如果不是 00:00:00 则显示 php 时间
【发布时间】:2014-12-29 13:32:44
【问题描述】:

如果不是00:00:00,如何显示时间?这行得通,但是,我质疑是否有一种不那么神秘的方法。请注意,提供的日期时间将是标准的 MySQL 日期时间数据类型,并且要显示的所需日期时间会有所不同。谢谢

<?php
function formatDate($d)
{
    $f='Y-m-d'.((strlen($d)==19 && substr($d, -8)!='00:00:00')?' H:i:s':null);
    $date = new DateTime($d);
    return $date->format($f);
}
echo(formatDate("2014-11-02 02:04:05").'<br>');
echo(formatDate("2014-11-02 00:00:00").'<br>');
?>

【问题讨论】:

  • 检查这个,看看是否有帮助:stackoverflow.com/questions/13129817/…
  • @LuísFerreira。谢谢 Luis,但我认为它不适用。
  • 你不能只检查时间是否为00:00:00,然后根据它选择日期格式吗?我看不出真正的问题是什么。
  • @约翰。这就是我在发布的示例中所做的。我不知道 PHP 日期类是否有一些内置方法可以这样做。
  • 为什么要将日期重新格式化为相同的格式?你不能只是str_replace(' 00:00:00', '', $d)吗?

标签: php


【解决方案1】:

你的方法看起来不错,但你也可以这样做:

$f = 'Y-m-d' . (date('H:i:s', strtotime($d)) != '00:00:00' ? ' H:i:s' : '');

See demo


更新:

@zerkms 在他的comment 中提出了一个很好的观点。为什么要重新格式化成相同的格式?除非您要使用与Y-m-d 不同的格式,否则您可能最好不使用函数,而只使用str_replace()。或者您可以这样简化您的功能:

function formatDate($d)
{
    return str_replace(' 00:00:00', '', $d);
}

See demo 2

【讨论】:

  • 我实际上会使用不同的格式,而不仅仅是默认格式。
猜你喜欢
  • 1970-01-01
  • 2017-10-23
  • 2017-08-11
  • 1970-01-01
  • 2015-01-10
  • 1970-01-01
  • 1970-01-01
  • 2011-06-27
  • 1970-01-01
相关资源
最近更新 更多