2014-03-06 59 views
0

我在我們的數據庫中有日期「2014-03-06 16:23:33」。我想顯示「2014年3月6日04:23:33 CST」。使用cakephp。日期格式應該在cst

如:

$this -> Html -> cDate ($courseLog['CourseLog']['completed_time'],'datetimes'); 

謝謝進階

Plz answer asAP。

+0

你問人們_「PLZ答案儘快」_,但在我發佈我的答案後5天,你沒有接受,上或下 - 投了答案,也沒有評論說如果有什麼,我的答案是錯的 –

回答

0

更新
雖然我一開始說我不知道​​,如果CakePHP的有這個特定的幫手,現在我幾乎完全肯定他們
自己的文件簡單地提到了DateTime類,並link to the PHP docs
而一個github上搜索什麼叫cDateshows up emptyCDATA是完全不同的東西反正...


作爲後續行動,以我的意見,這我會刪除,但添加完整性這裏:

我不知道,如果CakePHP有這個特定的幫手,但

$date = new DateTime($yourDateString); 
$date->format(DATE_RFC820); 

應該關閉。根據你需要的Compose your own format,或查詢the predefined constants一應俱全。

好,所以DATE_RFC850不變的是不是你正在尋找的格式,字符串操作的精確匹配(在一系列的substrexplode - implode呼叫)僅僅是繁瑣且顯得凌亂和業餘。但只是看格式參數
我懷疑你實際上是在尋找這樣的事情:

$date = new DateTime($courseLog['CourseLog']['completed_time']); 
$asString = $date->format('M d, Y h:i:s A e'); 

也許是更安全的爲您從您知道格式創建DateTime實例,並期望。你知道字符串是如何被格式化,這樣你就可以使用靜態方法DateTime::createFromFormat,太:

$date = DateTime::createFromFormat(
    'Y-m-d H:i:s', //yyyy-mm-dd hh:mm:ss format 
    $courseLog['CourseLog']['completed_time']//the string to parse 
); 
$asString = $date->format('M d, Y h:i:s A e'); 
echo $asString, PHP_EOL; 

正如你可以看到from this codepad,這完美的作品...

格式解釋:

  • M:這個月的短文本表示,F給出全月
  • d:一天中的2位(與前導零)表示,變化到j下降前導零
  • Y:4位年,而不是y,這給2位數字
  • h:12小時,前導零, g刪除前導零。利用這兩種格式,你會得到24小時的版本
  • i:分鐘,前導零
  • s:秒,憑藉領先的零
  • A:上午或下午,更改爲a得到上午PM
  • e:時間區標識符,替代是T(時區的縮寫)或OP和(均差,以時GMT,P添加小時minut之間的冒號ES(0400 VS +04:00)

底線,PHP自帶DateTime對象,它已經提供了日期和時間的工作了堅實的方式,我建議你簡單地使用核心對象。無論CakePHP提供什麼,它很可能只是一個包裝the DateTime and its related classes