2013-11-29 68 views
-1

試圖有一個基本的時間戳在我的帖子旁邊的cms,但strtotime給我的問題。strtotime總是返回1月1日

所以我有這樣的:

$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和第一個月是一月份。

,如果我做

 $echo $postDate; 

它正確地顯示DAT。

在DB中,日期被存儲爲例如。 2013年10月12日。

我哪裏錯了?

克雷格。

+0

預期輸出是什麼?還有一大堆已經問過和回答了php/date問題。你可以看看他們。 – HamZa

+0

$ day_number應該是10,而$ short month應該是dec。這根據日期示例。它的工作原理是給予一天一個月的時間。但總是顯示1 - 1月,而不是數據庫中存儲的日期 – Lovelock

+1

var_dump($ row ['date']);'? –

回答

1

日期2013年10月12日是模糊的。在美國它意味着2013年10月12日,而在英國它意味着2013年12月10日。我相信MySQL永遠不會以這種格式返回日期值,所以我認爲您的主要問題是您正在使用TEXT或VARCHAR值在數據庫中存儲日期。不要這樣做。

此外,撥打strtotime()的兩個電話有點多餘,如果您想要一個三個字母的月份,請在strtotime()呼叫中使用'M'。試試這個:

list($month,$day)=explode(' ',date('M j',strtotime('2013-10-12'))); 
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> 
'; 

確保$行[ '日期'];實際上是一個字符串,並且採用strtotime支持的格式(http://www.php.net/manual/de/datetime.formats.date.php)。

0

我測試了不同的格式,所以d-m-y而不是d/m/y,並且工作正常。

不知道爲什麼,但嘿嗬:)