2013-09-26 76 views
0

我必須做到以下幾點,入住時間

我的約會對象有兩種格式爲Y-m-d H:i:sY-m-d

我的要求是,

如果日期包含時間(H),需要轉換到F j, Y, g:i a

別的F j, Y

是沒有辦法,我可以提前在Y-m-d H:i:s

感謝檢查H

+4

使用'strstr()'看看日期是否有空格。 – Barmar

+0

這是從一個數據庫? – 2013-09-26 03:18:26

+0

我嘗試了'strstr($ date,date(「H」,strtotime($ date)))'並且正在工作 –

回答

1

Y-m-d日期格式的長度是10字符和Y-m-d H:i:s日期格式的長度是19字符。根據長度你可以找到它是否有日期部分。即使長度爲19個字符,時間部分可能爲0,在這種情況下,您會忽略時間部分。沿着這條線應該工作:

// $date = "2013-09-26"; 
// $date = "2013-09-26 00:00:00"; 
    $date = "2013-09-26 00:00:01"; 

if(strlen($date) == 10) 
{ 
// Include code to convert the date to F j, Y 
    echo $date , ' Does not have time part .'; 
} 
else 
{ 
    if( strlen($date) == 19 and substr($date, 10, 8) <> '00:00:00') 
    { 
    // Include code to convert the date to F j, Y, g:i a 
     echo $date , ' Has time part which is not 0 .'; 
    } 
    else 
    { 
    // Include code to convert the date to F j, Y 
     echo $date , ' Has time part but is 0 .'; 
    } 
} 
0

的東西正從一個數據庫,可能會或可能不會與時間的日期,當我使用任何避孕方法。根據需要修改。

IF(
    TIME({$val['field_name']}) = '00:00:00', 
    DATE_FORMAT(DATE({$val['field_name']}),'%D %M %Y'), 
    DATE_FORMAT({$val['field_name']},'%l:%i%p, %D %M %Y') 
    ) 
1

嘗試......

if(strstr($date, ' ') !== FALSE) { 
    $date = date('F j, Y, g:i a', strtotime($date)); 
} else { 
    $date = date('F j, Y', strtotime($date)); 
} 
0

它有點冗長 - 作爲@Bamar說你可以只檢查空間,但這會工作,即使有領導或現場尾隨空格:

$date_format = "\s*\d\d\d\d-\d\d-\d\d\s*"; 
$date_time_format = "\s*\d\d\d\d-\d\d-\d\d\s\d\d:\d\d:\d\d\s*"; 
if(preg_match($date_time_format, $subject)){ 
    $subject = date('F j, Y, g:i a', strtotime($subject)); 
} 
elseif(preg_match($date_format, $subject)){ 
    $subject = date('F j, Y', strtotime($subject)); 
} 
else{ 
    //formatting error - you can decide how to format. 
}