从mysql获取时间并以我们想要的任何格式回显它 - php

时间:2013-08-21 17:37:11

标签: php mysql datetime time

你们中的大多数人可能会发现这个重复(几乎)的问题,但我找不到解决方案,因为我想要在所有那些讨论中找到解决方案。

我在mysql数据库中有一个类型为= DATETIME的列,它将时间保存为2013-08-21 20:26:12。

现在,我可以在PHP页面上回复它,即2013-08-21 20:26:12,但我希望以下列格式回应它:

  1. 8月21日
  2. 2013年8月21日
  3. 2013年8月21日星期三晚上8:26
  4. 如果可以在从数据库中获取时间并应用某些PHP函数后执行此操作,或者我们可以在从数据库中获取时执行此操作,请指导我? 怎么样?

    感谢

    **更新:或者如果我能够使用date()生成时间;在PHP中将它存储在mysql数据库中作为TIME,这样我们就可以对它进行时间查询,比如搜索等

5 个答案:

答案 0 :(得分:11)

使用strtotime()将时间字符串转换为时间戳,然后使用date()函数将其转换为所需格式。

$str = '2013-08-21 20:26:12';
echo date('d M ', strtotime($str));
echo date('d M Y', strtotime($str));
echo date('g:i A, l - d M Y', strtotime($str));

输出:

21 Aug 
21 Aug 2013
8:00 PM, Wednesday - 21 Aug 2013

这应该让你开始。有关更多选项,请参阅date()功能文档。

<强> Demo!

答案 1 :(得分:2)

  

如果可以在从数据库中获取时间并应用某些PHP函数后执行此操作,或者我们可以在从数据库中获取时执行此操作,请指导我?怎么样?

  1. 在MySQL中使用DATE_FORMAT()

    SELECT DATE_FORMAT(my_column, '%D %b'                   ) FROM my_table;
    SELECT DATE_FORMAT(my_column, '%D %M, %Y'               ) FROM my_table;
    SELECT DATE_FORMAT(my_column, '%l:%i %p, %W - %D %M, %Y') FROM my_table;
    
  2. 在PHP中使用date()

    date('jS M',               $ts);
    date('jS F, Y',            $ts);
    date('g:i A, l - jS F, Y', $ts);
    

    (使用strtotime()UNIX_TIMESTAMP()等内容从字段值创建$ts的位置。

答案 2 :(得分:1)

21st Aug
21st August, 2013
8:26 PM, Wednesday - 21st August, 2013



$date="2013-08-21 20:26:12";

date("jS M",strtotime($date));
date("jS F, Y",strtotime($date));
date("h:i A, l - jS F, Y",strtotime($date));

答案 3 :(得分:0)

$Date = strtotime($FetchedDate);
$NewDate = date($format, $Date);

为了能够创建自己的格式,请查看: http://php.net/manual/en/function.date.php

答案 4 :(得分:0)

DateTime课程和Date formatting options会为您提供帮助: -

$dateStr = '2013-08-21 20:26:12';
$date = new \DateTime($dateStr);
echo $date->format('dS M');
echo $date->format('dS F, Y');
echo $date->format('h:i A l - dS F, Y');

输出: -

  8月21日   2013年8月21日
  2013年8月21日星期三08:26

Working example