将存储的日期和时间转换为用户友好的输出

时间:2014-11-19 06:14:03

标签: php mysql sql timestamp

所以我将消息存储在SQL表中,类型为:timestamp default:CURRENT_TIMESTAMP,如下所示:2014-11-11 11:43:23在数据库中和打印时。

我正在打印时间以及消息,但我正在寻找一种方法将其转换为更加用户友好的格式,即一些动态的东西,如果它是今天写的“12:15”或其他东西比如“星期一12:15”,如果它是在星期一12:15写的。

由于我从未做过这样的事情,我想知道是否有处理这个的片段(我找不到任何存储格式),或者我是否需要从头开始?

如果有人知道特定存储格式的程序,我当然愿意以不同的方式存储时间。

无论如何,真诚的感谢您的帮助。非常感谢。

5 个答案:

答案 0 :(得分:1)

尝试使用date()

echo date('l H:i', strtotime('2014-11-11 11:43:23')); //Tuesday 11:43 

date()中传递一种格式,您将获得输出

答案 1 :(得分:1)

最好将数据存储为基于DBMS的本机数据类型(例如timestapdatetime)。

如果您决定在php中格式化数据,可以使用php的date()函数对其进行格式化。它允许您从日期对象或字符串输出格式化/人类可读的日期时间值。有关可用格式的详细信息,请访问此link

答案 2 :(得分:1)

您可以使用Carbon库,它是PHP的DateTime类的扩展。 它有你想要的东西:https://github.com/briannesbitt/Carbon#api-humandiff

它会显示“一小时前”或“10天前”的相对时间等。

答案 3 :(得分:1)

我对您的问题很感兴趣并设法检索您要查找的结果:

DECLARE @date DATETIME,
    @day VARCHAR(100),
    @time VARCHAR(100)

SET @date = '2014-11-11 11:43:23'


SELECT @day = (
  DATENAME(dw, 
  CAST(DATEPART(m, GETDATE()) AS VARCHAR) 
  + '/' 
  + CAST(DATEPART(d, @date) AS VARCHAR) 
  + '/' 
  + CAST(DATEPART(yy, getdate()) AS VARCHAR))
  )

SELECT @time = CAST(@date AS TIME)

PRINT @day + ' ' + LEFT(@time, CHARINDEX('.', @time)-1)

结果:'周二11:43:23'

如果您需要清楚,请告诉我。

希望这有帮助。

答案 4 :(得分:1)

检查以下代码 - 它将显示为Tuesday 11:43

$date_time="2014-11-11 11:43:23";
$dte_new=date("l H:i", strtotime($date_time));

使用以下代码显示为Tuesday 11:43 AM

$date_time="2014-11-11 11:43:23";
$dte_new=date("l H:i A", strtotime($date_time));

Check php.net for further details