2011-03-30 48 views

回答

2

通過在SQL查詢中使用DATE_FORMAT函數,以所需格式提取日期。

+0

'DATE_FORMAT(的DateField,「%d /%米/%Y |%H:%I:%s的')'確切地說。 – 2011-03-30 16:22:15

1

我不知道爲什麼要使用使preg_split,只是做:

date("d/m/Y | G:i:s", strtotime($timestamp)); 

或用UNIX_TIMESTAMP()獲取從MySQL的Unix時間戳,然後做:

date("d/m/Y | G:i:s", $unix_timestamp); 
+0

浪費 - 更容易在MySQL中進行轉換並通過strtotime或unix_timestamp轉換保存php端往返 – 2011-03-30 16:23:26

+0

我認爲這兩種方法都是有效的方法,具體取決於您的設計模式。例如,如果數據庫交互代碼和格式代碼是分開的,那麼在PHP中進行格式化是完全有效的。 – 2011-03-30 16:40:27

2
date('d/m/Y | G:i:s', strtotime($theOriginalTime)) 

那應該做你需要的。

+0

浪費 - 更容易在MySQL中進行轉換並保存strtotime()解析的開銷。 – 2011-03-30 16:24:13

+1

哦,這個古老的辯論又一次開始了。我不喜歡將業務邏輯放入數據庫。這是個人偏好。 – 2011-03-30 16:30:26

+0

夠正確。取決於OP需要的東西的效率。拉出kajillion日期會建議在數據庫中進行日期格式設置。每小時做一次這會讓PHP開銷更容易消化。 – 2011-03-30 16:31:54

0

這很容易用正則表達式解決。這裏是一個測試PHP函數重新格式化在一個給定的文本串中的任何和所有這樣的日期:

function convert_dates($text) { 
    // Convert 2011-03-30 17:47:31 to 30/03/2011 | 17:47:31 
    $re = '/# Match components of a YYYY-MM-DD HH:MM:SS date. 
     \b      # Begin on word boundary 
     (\d{4})-    # $1: Year. 
     (\d{2})-    # $2: Month. 
     (\d{2})[ ]    # $3: Day. 
     (\d{2}):    # $4: Hour. 
     (\d{2}):    # $5: Minute. 
     (\d{2})    # $6: Second. 
     \b      # End on word boundary. 
     /Sx'; 
    $replace = '$3/$2/$1 | $4:$5:$6'; 
    return preg_replace($re, $replace, $text); 
} 
+0

你正規的癮君子,你。 – 2011-03-31 08:42:31