在PHP中更改时间格式

时间:2014-08-14 09:29:11

标签: php regex datetime time

我从SQL表中获得了以下带有varchar数据类型的输出。

Monday,11th of August 2014

我想显示为

11-Aug-2014

我想显示来自SQL的所有日期的上述日期格式但是mysql以大格式提供给我。 我是PHP新手 这里的任何人都可以用PHP代码实现这一目标。

If Possible Provide me Regex to solve this.

我很简单想要显示Date的缩短形式。

我将Varchar作为我的SQL,因此不可能使用Date_Time函数来解决它。

5 个答案:

答案 0 :(得分:0)

在mysql中

select date_format(mdate, '%d-%m-%Y %H:%i:%s') AS formated_date from tabl;或者你可以在php中做同样的事情。

$timestamp = strtotime($row["mdate"]);
then you can use all options of date() to format it, for example:

echo date('j-F-Y', $timestamp); // returns 09-03-2010 16:59:18 this can be set as per your required formate.

其中mdate是数据库中日期的字段。

答案 1 :(得分:0)

这里有一个正则表达式解决方案,但是我建议您收听有关列的数据类型的所有收到的注释。

$str = "Monday,11th of August 2014"; 

preg_match("/\,\s*(\d+).+([A-Z][a-z]{2}).+(\d{4})/", $str, $date); 
echo $date[1]."-".$date[2]."-".$date[3];

输出:

11-Aug-2014

答案 2 :(得分:-1)

此链接将帮助您。

http://php.net/manual/en/datetime.format.php

$date = new DateTime($YourDate);
echo $date->format('Y-m-d H:i:s');

问候

答案 3 :(得分:-1)

SELECT DATE_FORMAT(NOW(), '%d-%b-%Y') FROM dual

您可以使用日期列而不是NOW()来代替dual

这需要列类型为DATETIME

可在此处找到完整的日期格式选项表:http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format

答案 4 :(得分:-1)

您可以在不使用MySQL查询外部任何内容的情况下解决此问题。

在查询中使用STR_TO_DATE()函数返回表中的日期,如下所示: -

SELECT stupid_varchar_date, 
       STR_TO_DATE(stupid_varchar_date,'%W,%D of %M %Y') as a_usable_date

您还可以获取其他人给出的非常好的建议,并通过在此表中创建新列并使用stupid_varchar_date更新表来计算正确的MySQL日期或日期/时间字段来修复表。

UPDATE table SET new_date = STR_TO_DATE(stupid_varchar_date,'%W,%D of %M %Y')