2015-09-06 43 views
1

這對於很多人來說可能是一個小問題,但我無法解決它。 我想轉換日期存儲在我的分貝,並分別提取日,月和年。我一直在嘗試使用以下代碼進行轉換,並且它將返回描繪1970年1月1日的值以表示輸入日期值。 $item_date_day = date('d M Y', strtotime($item_date));其中$item_date是分貝值php - 時間格式轉換錯誤

樣品dB值: 15年9月28日(星期一)轉換後

返回的日期: 1970年1月1日

需要的輸出: 9月28日2015

任何線索爲什麼轉換出錯?

+0

普萊塞添加的var_dump(item_date $)''的輸出。 – Bjoern

回答

4

strtotime不接受這種格式。其實這個功能所接受的格式是有限的。試試這個:

<?php 

    $date = DateTime::createFromFormat('d F y (l)', $item_date); 
    $item_date_day = $date->format('d M Y'); 
+0

非常感謝艾哈邁德!它按照你提到的方式工作。 – krishna89

0

括號內的日期名稱正在停止工作strtotime。你可以使用正則表達式來刪除它。例如:

$date = '28 September 15 (Monday)'; 
$date = preg_replace('/(.*) (\(.*\))/', '$1', $date); 
echo date('d M Y', strtotime($date)); 
1

這是一個可能的解決方案,這種方式可以確保不管是什麼的最後一個項目,它會永遠返回的權利。

$date_str = '28 September 15 (Monday)'; 
$date_arr = explode(' ', $date_str); 
$date_clean = array_pop($date_arr); 
$date = implode($date_arr); 
echo date('d M Y', strtotime($date)); 

這將輸出

28 Sep 2015 
+1

謝謝傑里米皮爾。我只是試過你的解決方案,它也適用於我。 – krishna89

+0

任何時候都沒問題 –