@name_a

Как лучше в yii организовать форматирование даты и на каких этапах это делать?

Есть sql server с его форматом datetime 2014-01-13 11:40:34.423
Есть необходимость в некоторых формах редактировать дату и время и сохранять изменения.
Пользователю нужно отдавать человеческий формат даты и времени 13.01.2014 и 11:40:34, а в БД сохранять в формате datetime.

Как лучше организовать форматирование даты и на каких этапах это делать?
  • Вопрос задан
  • 4858 просмотров
Решения вопроса 1
Храню int'ом.
При вводе в поля при создании новой сущности или поиске/фильтре человеческой даты (Y-m-d) в beforeValidate перевожу в unixtime.
При выводе unixtime перевожу в Y-m-d

public function beforeValidate()
	{
		$attrs = [ 'time', 'testing', 'call' ];
		foreach ( $attrs as $attr ) {
			$time = \DateTime::createFromFormat( 'Y-m-d H:i:s', $this->$attr );
			if ( !$time ) continue;
			$this->$attr = $time->format( 'U' );
		}

		parent::beforeValidate();
		return true;
	}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Nc_Soft
При выводе конечно. Можно даже на js.
Ответ написан
Есть CDateFormatter.

Но если вам хватает DateTime, то нет ничего криминального в том, что бы использовать его. Теоретически это усложнит изменения дизайна и локализацию, но на практике все-равно все приходится перелопачивать.

Делать преобразование даты конечно же лучше в шаблоне, там где она выводится.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы