2014-02-24 43 views
4

PHP date("H:i (d.m.Y)",$timestamp)函數表示確切的午夜爲下一天的00:00。但我需要它將其表示爲前一天的24:00。是否可以在不編寫完全新的date()解析器函數的情況下完成?PHP日期()打印24:00而不是00:00

編輯:爲什麼我需要這種'怪異'的格式?因爲我的客戶要求它。在我的國家(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); 
} 
+8

沒有這樣的時間'24:00'。你會在什麼情況下告訴某人它是'24:00'小時? –

+0

這裏在葡萄牙使用了很多。也許歐洲的東西:) –

+1

我不認爲這是一個歐洲的東西(住在倫敦)有一個像24:00時間有點編程意味着你可能有24:01以及這是完全錯誤的 – kali

回答

2
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"