PHP date()打印24:00而不是00:00

时间:2014-02-24 14:04:52

标签: php date

PHP date("H:i (d.m.Y)",$timestamp)函数表示当天午夜的00:00。但我需要它代表它作为前一天的24:00。是否可以在不编写全新的date()解析器函数的情况下完成?

编辑:为什么我需要这种“怪异”格式?因为我的客户要求它。在我的国家(CZ),有时会在提到午夜的时候使用24:00。

edit2:我当前的'脏'解决方案是:(不适用于所有可能的格式字符串)

function date_24midnight($format,$ts)
{
   if(date("Hi",$ts)=="0000")
      return preg_replace('/23:59/',"24:00",date($format,$ts-1));
   else
      return date($format,$ts);
}

1 个答案:

答案 0 :(得分:3)

function date_24midnight($format,$ts)
{
   if(date("Hi",$ts)=="0000") {
      $replace = array(
        "H" => "24",
        "G" => "24",
        "i" => "00",
      );

      return date(
        str_replace(
          array_keys($replace),
          $replace, 
          $format
        ),
        $ts-60 // take a full minute off, not just 1 second
      );
   } else {
      return date($format,$ts);
   }
}

此功能基于您的功能,但适用于所有格式(我测试过)

所以H:i:s例如

对于像"\H\i Y-m-d"

这样的格式,还需要一些额外的工作