Как изменить формат даты в Yii

56
9

Привет, я новичок в Yii. Я сохраняю данные в таблице, которая сохраняет дату created_at. Но я получаю другой формат даты, который находится в целочисленном виде, например " 1462422044 ". Я хочу изменить его на dd-mm-yyyy h:i:s. Как изменить этот формат даты?

Мой Master.php

public function behaviors() {
return [
'timestamp' => [
'class' => TimestampBehavior::className(),
'attributes' => [
ActiveRecord::EVENT_BEFORE_INSERT => ['created_at', 'updated_at'],
ActiveRecord::EVENT_BEFORE_UPDATE => 'updated_at',
],
'value' => function() {
return time();
},
],
'user' => [
'class' => UserBehavior::className(),
'attributes' => [
ActiveRecord::EVENT_BEFORE_INSERT => ['created_by', 'updated_by'],
ActiveRecord::EVENT_BEFORE_UPDATE => 'updated_by',
],
'value' => function() {
return \Yii::$app->user->id == '' ? 0 : \Yii::$app->user->id;
},
],
];
}

Мои общие /models/product.php

    public function behaviors() {
return [
BlameableBehavior::className(),
TimestampBehavior::className(),
];
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['parent_id', 'created_by', 'updated_by'], 'integer'],
[['category_name'], 'required'],
[['created_at', 'updated_at'], 'safe'],
[['category_name'], 'string', 'max' => 100],
];
}

спросил(а) 2016-05-05T07:25:00+03:00 4 года, 2 месяца назад
1
Решение
54

Если ваш тип данных является datetime в базе данных, тогда вы должны сохранить преобразование значения в этом формате "Ymd H: i: s", вы можете сделать это так. и created_at означает, что вы хотите сохранить текущую дату и время. поэтому попробуйте ниже код, надеюсь, что он работает нормально. здесь я моя переменная модели - это $ model, которую вам нужно заменить именем переменной. Ниже приведен один путь, если вы хотите сохранить текущее время.

$model->created_at= date('Y-m-d H:i:s');

Вот второй способ, который вы можете преобразовать из переменной. предположим, что вы получите свое значение в $currentDate тогда вы можете сделать это, как $currentDate ниже.

$model->created_at= date('Y-m-d H:i:s',strtotime($currentDate));

ответил(а) 2016-05-05T07:46:00+03:00 4 года, 2 месяца назад
54

Измените свой код, как показано ниже:

public function behaviors() {
return [
'timestamp' => [
'class' => TimestampBehavior::className(),
'attributes' => [
ActiveRecord::EVENT_BEFORE_INSERT => ['created_at', 'updated_at'],
ActiveRecord::EVENT_BEFORE_UPDATE => 'updated_at',
],
'value' => function() {
return date('d-m-Y h:i:s');
},
],
'user' => [
'class' => UserBehavior::className(),
'attributes' => [
ActiveRecord::EVENT_BEFORE_INSERT => ['created_by', 'updated_by'],
ActiveRecord::EVENT_BEFORE_UPDATE => 'updated_by',
],
'value' => function() {
return \Yii::$app->user->id == '' ? 0 : \Yii::$app->user->id;
},
],
];
}

time() на дату ('dmY h: i: s').

ответил(а) 2016-05-05T07:38:00+03:00 4 года, 2 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема