2015-01-20 23 views
5

Tôi đã định cấu hình date_date_date là datetime trường trong db mysql.yii2: định dạng ngày để hiển thị

Trong mô hình quy tắc Appointment.php của tôi được thiết lập như thế này:

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

và trong web.php dưới phần tôi đã thiết

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

và theo quan điểm của tôi, tôi đang cố gắng để định dạng ngày để hiển thị như thế này:

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

Bây giờ tôi gặp lỗi -

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 
) 

Trong khi ngày lưu trữ trong cơ sở dữ liệu như: 2015-01-20 11:50:00

Nếu tôi không định dạng ngày và chỉ đơn giản là giữ các thuộc tính trong quan điểm như appointment_date sau đó ngày được thể hiện như 2015-01-20 11:50:00

tôi muốn hiển thị ngày như 20-01-2015 11:50:00

Nếu tôi sử dụng mã như thế này:

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

Tôi đang nhận được ngày định dạng chính xác.

Tôi muốn biết Những gì tôi đang làm sai ở đây trong việc sử dụng

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

Cảm ơn

Trả lời

6

Tôi nghĩ rằng nó chỉ là một typo nhỏ. Bạn đang đi qua trong một chuỗi vào phương pháp asDateTime nơi nó cần giá trị

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

nên

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

Documents: http://www.yiiframework.com/doc-2.0/yii-i18n-formatter.html#asDatetime()-detail

+0

@ fl0r- đề xuất của bạn cũng đúng, nhưng tôi cần sử dụng mã dài như 'attribute =>' date_date', 'value' => Yii :: $ app-> formatter-> asDatetime ($ model-> appoint_date) – Pawan

6

OK nó là đơn giản như vậy, tôi cần phải sử dụng

'appoinment_date:date' 

hoặc

'appointment_date:datetime' 

và thêm định dạng trong định dạng thành phần

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

và bây giờ nó đang làm việc tốt.

0

loại DB của tôi về ngày là date vì vậy nó được lưu trữ và đưa ra phản ứng trong "YYYY-DD-MM" formate.
Tôi đã làm điều này trong chế độ xem (index.php) mà không thay đổi dữ liệu logic hoặc DB.

ban đầu nó là

'date' 

mà tôi đã thay đổi với this-

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

Nó đang làm việc tốt cho tôi,
Hy vọng nó sẽ làm việc cho vài người thiếu thốn hơn.

0

Đặt mã dưới đây dưới phần thành phần trong dự án/config/web.php

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

Nơi bạn hiển thị ngày ot datetimein lưới của bạn chỉ cần thêm này Đối với ngày

'date_column_name:date' 

Đối Datetime

'datetime_column_name:datetime' 

Đó là nó. Nó sẽ hoạt động cho toàn bộ dự án của bạn ở đâu yo u muốn thay đổi ngày hoặc định dạng ngày giờ.

Các vấn đề liên quan