我将日期存储在标准格式的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']);
并获得相同的日期!
我发现了许多不同的显示日期的方式,但它们令人困惑。谁能告诉我发生了什么事?
感谢。
答案 0 :(得分:0)
strtotime
无法解析从MySQL获取的日期字符串。它无益地返回FALSE,date
类型强制转换为0并解释为unix时期。然后显示为1969年12月31日。
听起来您的数据库将日期存储为字符串或其他内容。如果是这种情况,我建议尽可能改变方案。