yii2:

2015-01-20 12 views
5

प्रदर्शित करने के लिए दिनांक की स्वरूपण मैंने mysql डीबी में datetime फ़ील्ड के रूप में दिनांक फ़ील्ड नियुक्ति_डेट को कॉन्फ़िगर किया है।yii2:

अपने मॉडल Appointment.php नियमों में इस तरह सेट कर रहे हैं:

public function rules() 
    { 
     return [ 
      [['appointment_date','weekdays'], 'safe'], 
      [['appointment_date'], 'date','format' => 'd-M-yyyy H:m'], 

और घटक के अंतर्गत web.php में मैं निर्धारित किया है

'formatter' => [ 
     'defaultTimeZone' => 'UTC', 
     'timeZone' => 'Asia/Kolkata', 

और मेरे विचार में मैं फ़ॉर्मेट करने के लिए कोशिश कर रहा हूँ इस तरह के प्रदर्शन के लिए तारीख:

[ 
    Yii::$app->formatter->asDatetime('appointment_date') 
], 

अब मैं त्रुटि हो रही है -

appointment_date' is not a valid date time value: DateTime::__construct(): Failed to parse time string (appointment_date) at position 0 (a): The timezone could not be found in the database 
Array 
(
[warning_count] => 1 
[warnings] => Array 
(
[6] => Double timezone specification 
) 

[error_count] => 3 
[errors] => Array 
(
[0] => The timezone could not be found in the database 
[11] => Unexpected character 
[12] => Double timezone specification 
) 

डेटाबेस में संग्रहीत तारीख जबकि की तरह है: 2015-01-20 11:50:00

मैं तिथि स्वरूपण नहीं कर रहा हूँ और बस appointment_date तो तिथि के रूप में ध्यान में रखते हुए विशेषता रखने के रूप में दिखाया गया है 2015-01-20 11:50:00

मैं मैं इस तरह कोड का उपयोग कर रहा है, तो के रूप में 20-01-2015 11:50:00

तारीख दिखाना चाहते हैं:

[ 
    'attribute'=>'appointment_date', 
    'format'=>['DateTime','php:d-m-Y H:i:s'] 
      ], 

मुझे तारीख को सही ढंग से स्वरूपित किया जा रहा है।

मुझे पता है कि मैं गलत यहाँ क्या कर रहा हूँ का उपयोग कर

Yii::$app->formatter->asDatetime('appointment_date') 

धन्यवाद

उत्तर

6

मुझे लगता है कि यह सिर्फ एक छोटा सा टाइपो है में चाहते हैं। आप asDateTime विधि जहां यह मूल्य की जरूरत में एक स्ट्रिंग में गुजर रहे हैं

Yii::$app->formatter->asDatetime('appointment_date') 

Yii::$app->formatter->asDatetime($model->appointment_date) 

डॉक्स होना चाहिए: http://www.yiiframework.com/doc-2.0/yii-i18n-formatter.html#asDatetime()-detail

+0

@ fl0r- आपका सुझाव भी सही है, लेकिन मुझे 'विशेषता =>' placement_date', 'value' => yii :: $ app-> formatter-> के रूप में लंबे कोड का उपयोग करने की आवश्यकता है ($ model-> placement_date) – Pawan

6

ठीक है कि जितना आसान है, मैं उपयोग करने की आवश्यकता

'appoinment_date:date' 

या

'appointment_date:datetime' 

और घटक फ़ॉर्मेटर

'formatter' => [ 
     'defaultTimeZone' => 'UTC', 
     'timeZone' => 'Asia/Kolkata', 
     'dateFormat' => 'php:d-m-Y', 
     'datetimeFormat'=>'php:d-M-Y H:i:s' 

में प्रारूप जोड़ सकते हैं और अब यह ठीक काम कर रहा है।

0

मेरी डीबी प्रकार की तारीख date है इसलिए यह "YYYY-DD-MM" में प्रतिक्रिया दे रही है और प्रतिक्रिया दे रही है।
मैंने तर्क या डीबी डेटा को बदले बिना इसे देखा (index.php)।

शुरू में यह

'date' 

जो मैं इस-

  [ 
       'attribute' => 'date', 
       'value' => function ($model, $key, $index, $widget) { 
        return date("d-m-Y", strtotime($model->date)); 
       }, 
      ], 

के साथ बदल यह मेरे लिए ठीक काम कर रहा है,
आशा है कि यह कुछ और जरूरतमंद के लिए काम करेगा था।

0

परियोजना में घटक धारा के तहत नीचे कोड रखो/config/web.php

'formatter' => [ 
    'defaultTimeZone' => 'UTC', 
    'timeZone' => 'Asia/Kolkata', 
    'dateFormat' => 'php:d-m-Y', 
    'datetimeFormat'=>'php:d-M-Y H:i:s' 
    ] 

कहाँ OT तारीख दिखाए जाने वाले आपके ग्रिड datetimein सिर्फ दिनांक

'date_column_name:date' 

के लिए यह जोड़ने Datetime के लिए

'datetime_column_name:datetime' 

यही है। यह आपके पूरे प्रोजेक्ट के लिए काम करेगा जहां यो आप तिथि या डेटाटाइम प्रारूप बदलना चाहते हैं।