尝试在cms上的帖子旁边有一个基本时间戳,但strtotime给了我一些问题。
所以我有这个:
$postDate = $row['date'];
$written_month = date("F", strtotime($postDate));
$short_month = substr($written_month, 0, 3);
$day_number = date("j", strtotime($postDate));
echo '
<div id="postTimeStamp">
<div id="postTimeStamp_day">
'.$day_number.'
</div>
<div id="postTimeStamp_month">
'.$short_month.'
</div>
</div>
';
我无法弄清楚为什么但是这一天总是第1天,月份是1月。
如果我这样做
$echo $postDate;
正确显示数据。
在数据库中,日期存储为例如2013年10月12日
我哪里错了?
克雷格。
答案 0 :(得分:1)
我尝试了你的代码,它的工作正常:
$postDate = '12/12/2012';
$written_month = date("F", strtotime($postDate));
$short_month = substr($written_month, 0, 3);
$day_number = date("j", strtotime($postDate));
echo '
<div id="postTimeStamp">
<div id="postTimeStamp_day">
'.$day_number.'
</div>
<div id="postTimeStamp_month">
'.$short_month.'
</div>
</div>
';
确保$ row ['date'];是一个字符串,并由strtotime(http://www.php.net/manual/de/datetime.formats.date.php)支持格式。
答案 1 :(得分:1)
2013年12月10日的日期不明确。在美国,它意味着2013年10月12日,在英国意味着2013年12月10日。我确信MySQL永远不会以这种格式返回日期值,因此我认为您的主要问题是您使用的是TEXT或VARCHAR值在您的数据库中存储日期。不要那样做。
此外,对strtotime()
进行两次调用有点多余,如果您想要一个三个字母的月份,请在strtotime()
来电中使用“M”。试试这个:
list($month,$day)=explode(' ',date('M j',strtotime('2013-10-12')));
答案 2 :(得分:0)
我测试了不同的格式,所以d-m-y而不是d / m / y,并且工作正常。
不知道为什么但是嘿嘿:)