以可读格式显示日期

时间:2013-08-11 19:06:46

标签: php mysql date

我将日期存储在标准格式的MySQL数据库表中 - 例如1955年7月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']);

并获得相同的日期!

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

感谢。

1 个答案:

答案 0 :(得分:0)

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

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