2012-06-15 13 views
12

मैं Yii आवेदन में cgridview निम्नलिखित था दिखाने के लिए, मैं मूल्य में दिनांक स्वरूप को बदलना चाहते हैं,Yii, cgridview में विभिन्न दिनांक स्वरूप

'columns'=>array(
     array(
       'name'=>'Date', 
       'header'=>'Date', 
       'value'=>'$data["work_date"]' 
      ), 

मैं वर्तमान में यह प्रारूप dd-mm-yyyy में तारीख दिखाना चाहते हैं yyyy-mm-dd के रूप में दिखाता है।

उत्तर

26

इस प्रयास करें,

array(
    'name'=>'Date', 
    'header'=>'Date', 
    //'value'=>'date("d M Y",strtotime($data["work_date"]))' 
    'value'=>'Yii::app()->dateFormatter->format("d MMM y",strtotime($data->date))' 
), 
+0

यह Yii उपकरण प्रदान की उपयोग करने के लिए बेहतर होगा। इस कार्य के लिए [सीडीएफ़फॉर्मेटर] मौजूद है (http://www.yiiframework.com/doc/api/1।1/CDateFormatter # प्रारूप-विस्तार)। – sucotronic

+0

धन्यवाद, यह काम कर रहा है। मैं बस 'मान' => 'दिनांक ("dmY", strto ... – Kiran

+0

@ सुकोट्रॉनिक में थोड़ा संशोधित करता हूं, मैंने वर्तमान में दिनांक प्रदर्शन के लिए PHP कोर कोड का उपयोग किया था। सीडीएफ़फ़ॉर्मेटर का उपयोग करने का तरीका नहीं ढूंढ सकता, क्या आप कृपया मुझे इस के लिए एक उदाहरण कोड दें ??? अग्रिम धन्यवाद। – Kiran

2

रहे हैं (कम से कम) दो विकल्प:

(CGridView/CDetailView का उपयोग करते समय) आप एक तिथि स्ट्रिंग (यानी स्वरूपित करना चाहते हो सकता है: mysql datetime क्षेत्र) एक टाइमस्टैम्प के बजाय। आप इस का उपयोग कर सकते हैं:

array(
    'name' => 'startsOn', 
    'format' => 'datetime', 
    'value' => 'strtotime($data->startsOn)' 
), 

या इस का उपयोग करें:

array(
    'name' => 'startsOn', 
    'value' => 'Yii::app()->dateFormatter->format("d MMM y", strtotime($data->startsOn))' 
), 
+0

हां उपरोक्त उत्तर में दिखाया गया वही चीज़। – Kiran

5

मुझे लगता है कि वहाँ अन्य उत्तर में प्रस्तावित एक से तिथि (या कुछ और) फ़ॉर्मेट करने के लिए और अधिक सुरुचिपूर्ण तरीका है। CGridViewformatter संपत्ति का उपयोग component to format values निर्दिष्ट करने के लिए करता है। डिफ़ॉल्ट रूप से यह format है।

तो एक इस तरह आवेदन के विन्यास फाइल में format घटक कॉन्फ़िगर करना चाहिए:

'components' => array(
    ... 
    'format' => array(
     'dateFormat' => 'd-m-Y' 
    ) 
) 

तो work_date पहले से ही यूनिक्स टाइमस्टैम्प तो है यह CGridView में स्तंभ का वर्णन करने के लिए पर्याप्त रूप में निम्न प्रकार है:

array(
    'name' => 'work_date', 
    'type' => 'date' 
) 

हैं work_date प्रश्न में है तो कॉलम की सरणी:

array(
    'name' => 'work_date', 
    'type' => 'date', 
    'value' => 'strtotime($data->work_date)' 
) 

एक है कि CFormatter द्वारा समर्थित नहीं है फ़ॉर्मेट करने के लिए कस्टम फ़ील्ड है तो फिर वह जोड़ना आसान है अपने खुद के typecustomCFormatter बढ़ा कर:

class MyFormatter extends CFormatter 
{ 
    public function formatCustom($value) 
    { 
     // format $value parameter, i.e. make date conversion like in the question: 
     return date("d-m-Y", strtotime($value)); 
    } 
} 

फिर प्रारूप घटक के विन्यास है:

'components' => array(
    ... 
    'format' => array(
     'class' => 'MyFormatter' 
    ) 
) 

और कॉलम इस तरह वर्णित है:

array(
    'name' => 'work_date', 
    'type' => 'custom' 
) 

इस तरह प्रत्येक बार जब आप उसी प्रकार के फ़ील्ड को प्रारूपित करना चाहते हैं तो value PHP अभिव्यक्ति को परेशान करने की आवश्यकता नहीं है।

+0

मैं सहमत हूं। Elegancy के लिए +1। –

+0

बेहतर समाधान, यह मैं देख रहा था – iamawebgeek

0

View.php लिए Admin.php लिए

array(
     'name'=>'start_date', 
     'header'=>'Date', 
     'value'=>'date_format(date_create($data->start_date), "d-m-Y ")', 
    ), 

array(
    'name'=>'Date', 
    'value'=>date_format(date_create($model->order_date), "d-m-Y "), 
    ), 
संबंधित मुद्दे