2011-03-30 47 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