1

我将日期以标准格式存储在 MySQL 数据库表中 - 例如 1955-07-23。我想这样显示它们:1955 年 7 月 23 日。

所以我尝试了这个:

echo DATE("F d, Y",strtotime($Born['DATE']));

它显示正确的格式,但错误的日期。无论我如何更改它,它都显示为 1969 年 12 月 31 日。

从一开始,这是我的查询,其中 PB.Born 和 PB.Died = 各种人出生和死亡的日期:

$res = mysql_query ("SELECT P.URL, PB.Born, PB.Died, PB.Birth_Place, PB.Death_Place
 FROM people P
 LEFT JOIN people_1_bio PB ON PB.URL = P.URL
 WHERE P.URL LIKE '$MyURL' AND P.Site = '$MySiteID'") or die (mysql_error());

然后我有这个...

$Born = $row['Born'];
$Died = $row['Died'];
$Birth = DATE("F d, Y",strtotime($Born['DATE']));
$Death = DATE("F d, Y",strtotime($Died['DATE']));

我已经尝试了许多变体,在 while 循环内部和外部。无论页面 URL 是什么,显示的日期始终是 1969 年 12 月 31 日。

我还尝试了另一种策略...

$res = mysql_query ("SELECT P.URL, UNIX_TIMESTAMP(Born) AS Birth, PB.Died,
 FROM people P
 LEFT JOIN people_1_bio PB ON PB.URL = P.URL
 WHERE P.URL LIKE '$MyURL' AND P.Site = '$MySiteID'") or die (mysql_error());

然后我附和它...

echo date('F j, Y',$result['Birth']);

并获得相同的日期!

我发现了无数种显示日期的不同方式,但它们令人困惑。谁能告诉我发生了什么事?

谢谢。

4

1 回答 1

0

strtotime无法解析从 MySQL 获取的日期字符串。它毫无帮助地返回 FALSE,它将date类型强制转换为 0 并解释为 unix 纪元。然后显示为 1969 年 12 月 31 日。

听起来您的数据库将日期存储为字符串或其他内容。如果是这种情况,我建议尽可能更改方案。

于 2013-08-11T19:34:21.580 回答