全局更改日期格式

时间:2013-04-17 07:33:52

标签: php mysql sql web

我正在使用PHP和mysql并使用DateDateTime来保存mysql数据库中的日期。在现场,我一直在显示他们保存在数据库中的日期。

但现在我想使用一种格式在网站上随处显示日期:

April 17 2013

April 17 2013 12:20:50

我知道我可以使用datestrtotime函数以上述格式显示日期。但是我有很多地方有日期显示代码。因此,我希望自动化当前代码的工作过程,并以上述格式显示日期。

如何创建 mysql触发器或某些php魔法可以创建转换所有日期自动运行SELECT查询而不更改我的sql或php代码,因为我的代码中有很多地方和在所有地方更改代码会有点过分吗?

例如:

保存在数据库中的日期: 2013-04-16 12:41:26

选择查询: SELECT * FROM myTable

PHP: echo $row->dated;显示2013-04-16 12:41:26

我希望在不更改我的PHP代码的情况下,日期应该在整个网站上以全局显示上述格式。

有任何想法,请问如何实现?

2 个答案:

答案 0 :(得分:4)

您可以使用DATE_FORMAT()

直接格式化
SELECT DATE_FORMAT(myDate, '%M %d %Y %h:%i') myDate
FROM   TableName

并在PHP中回显:$row->myDate


MySQL Trigger不会投影值,只会在CrUD操作期间触发。

答案 1 :(得分:1)

我想建议你一种我喜欢使用的替代方法。

您应该使用epoch时间。纪元时间基本上是自1 January 1970

以来经过的秒数
  1. 如果我喜欢的好处是,它很容易计算 因为你只处理数量的时间差异 秒,而不是复杂的格式,例如sec min hrs

  2. 另一个好处是它很容易存储,因为它的a 整数,所以你可以将它存储在一个sql db中,并让你的PHP代码理解它,而不必担心格式和类似的东西。

  3. 在php中,如果你使用time()函数,它将返回纪元时间。 如果您想以用户友好的方式显示它。您可以使用以下代码:

    $epoch = time();
    $dt = new DateTime("$epoch"); // convert UNIX timestamp to PHP DateTime
    echo $dt->format('Y-m-d H:i:s'); // output = 2012-08-15 00:00:00 
    

    如您所见,日期的格式非常灵活,因此易于使用。

    在1周前找到日期的一个很好的例子:

    $epoch = time() - 604800; //604800 seconds = 7 days
    $dt = new DateTime("$epoch"); // convert UNIX timestamp to PHP DateTime
    echo $dt->format('Y-m-d H:i:s'); // output = 2012-08-15 00:00:00 
    
相关问题