0

我正在使用 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 代码的情况下,日期应在整个站点上以上述格式全局显示。

任何想法请如何实现?

4

2 回答 2

4

您可以使用通过查询直接格式化DATE_FORMAT()

SELECT DATE_FORMAT(myDate, '%M %d %Y %h:%i') myDate
FROM   TableName

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


MySQL 触发器不投射值,它只在CrUD操作期间触发。

于 2013-04-17T07:36:30.293 回答
1

我想向您推荐一种我喜欢使用的替代方法。

你应该利用epoch时间。一个纪元时间基本上是从那以后经过的秒数1 January 1970

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

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

在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 
于 2013-04-17T08:41:59.243 回答