2015-06-22 67 views
2

我遇到需要使用PHP更改日期格式的情況。使用PHP轉換日期格式

該網站使用Joomla & k2。該模板使用下列獲得文章發佈日期:A d B Y

我需要改變它出現的日期格式:Y m d

$itemCreated = JHTML::_('date', $item->created, JText::_('DATE_FORMAT_LC4')); 
echo $itemCreated; 

這將輸出下面的日期格式

(注意:對於那些熟悉Joomla的人& K2:我不想使用語言重寫,這個特殊的任務只需要使用PHP來完成)。

回答

1

這是您可以在PHP

做假設你rcieving的timeUNIX Timestamp

$time = date('Y-m-d',strtotime($your_unix_timestamp)); 
+0

我不是真的確定如何結合我需要轉換的現有代碼(在我的原始文章中) – shanDB

+0

'$ item-> created'這是什麼給你的時間字符串?+ – Abhinav

+0

是的,這是正確的 – shanDB

0

我曾經在的Joomla日期格式相同的問題是什麼。這是一個小的代碼片段我有時用:

 $theDate = new DateTime($item->created); 
     $itemCreated= strftime("%Y %m %d", mktime(0, 0, 0, $theDate->format('n'), $theDate->format('j'), $theDate->format('Y'))); 

而對於一個Joomla模塊開發我做了一個類的更完整的實現部分。你也可以使用這兩個函數將$ item->作爲參數傳遞給formatDate()函數。

function buildDateObj($date) { 
    try { 
     $dateObj = new DateTime($date); 
    } catch (Exception $e) { 
     // return $e->getMessage(); 
     return false; 
    } 
    return $dateObj; 
} 

function formatDate($date) { 
    $formattedDate = ''; 
    if ($date !== "") { 
     $currDate = buildDateObj($date); 
     if ($currDate !== false) { 
      $lang = JFactory::getLanguage(); 
       $LangTag = $lang->getTag(); 
       setlocale(LC_TIME, $LangTag); 

      $formattedDate = strftime("%Y %m %d", mktime(0, 0, 0, $currDate->format('n'), $currDate->format('j'), $currDate->format('Y'))); 
      setlocale(LC_TIME, 0); 
     } 
    } 
    return $formattedDate; 
} 

$itemCreated = formatDate($item->created) 

不同的strftime日期格式。

0

這是Joomla。

代碼

JHTML::_('date', $item->created, JText::_('DATE_FORMAT_LC4')); 

實際獲取的項創建日期的格式:DATE_FORMAT_LC4

以下格式默認

DATE_FORMAT_LC="l, d F Y" 
DATE_FORMAT_LC1="l, d F Y" 
DATE_FORMAT_LC2="l, d F Y H:i" 
DATE_FORMAT_LC3="d F Y" 
DATE_FORMAT_LC4="Y-m-d" 
DATE_FORMAT_JS1="y-m-d" 

中的Joomla每個已安裝的語言改變那些他們的地方格式,以便在多語言網站的用戶看到他們的本地格式。

如果你想查看一個「固定」格式,不管是什麼用戶本地是,你可以改變: 此:

JHTML::_('date', $item->created, JText::_('DATE_FORMAT_LC4')); 

這樣:

JHTML::_('date', $item->created, 'Y m d');