Ввод и вывод времени формата(HH:mm) в БД

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Закрыто
evgeniy123
Сообщения: 401
Зарегистрирован: 2011.11.01, 17:29

Ввод и вывод времени формата(HH:mm) в БД

Сообщение evgeniy123 »

Здравствуйте. Встал вопрос как работать с таким форматом вывода и ввода как HH:mm.Сформировать такое при вводе на js на стороне клиента - не проблема. А вот как потом в BD это дело положить - не знаю.

попробовал просто вывести таким образом:

Код: Выделить всё

   <?php

                        $this->widget('CMaskedTextField', array(
                                'model'=> $model,
                                'name' => 'User[monday_from]',
                                'mask' => '99.99',
                                'id'=>'example1',
                               // 'attribute'=>'monday_from',
                                'value'=>  Yii ::app()->dateFormatter->format('HH:mm', $model->monday_from))
                        );
                        ?>
Но почему то всегда показывает местное время формата HH:mm, только тогда тогда одни нули у пользователя в BD

rules():

Код: Выделить всё

......
  array('monday_from','type','type'=>'time','timeFormat'=>'HH:mm'),
.......
 
Как бы это получить нужный результат ? Спасибо заранее
alexZT
Сообщения: 362
Зарегистрирован: 2012.03.06, 11:33
Откуда: Украина/Житомир
Контактная информация:

Re: Ввод и вывод времени формата(HH:mm) в БД

Сообщение alexZT »

а в базе поле времени часом не timestamp ? если так - то нужно Вашу дату перевести в timestamp и писать в базу метку времени
я человек и мне свойственно ошибаться
yii@conference.jabber.ru
evgeniy123
Сообщения: 401
Зарегистрирован: 2011.11.01, 17:29

Re: Ввод и вывод времени формата(HH:mm) в БД

Сообщение evgeniy123 »

alexZT писал(а):а в базе поле времени часом не timestamp ? если так - то нужно Вашу дату перевести в timestamp и писать в базу метку времени
Type datetime. но можно поменять так как это только начало.Может заодно подскажите в каком формате лучше хранить чтобы поменьше мороки было сейчас и потом ?
alexZT
Сообщения: 362
Зарегистрирован: 2012.03.06, 11:33
Откуда: Украина/Житомир
Контактная информация:

Re: Ввод и вывод времени формата(HH:mm) в БД

Сообщение alexZT »

evgeniy123 писал(а): Type datetime. но можно поменять так как это только начало.Может заодно подскажите в каком формате лучше хранить чтобы поменьше мороки было сейчас и потом ?
Тип данных DATETIME используется для величин, содержащих информацию как о дате, так и о времени. MySQL извлекает и выводит величины DATETIME в формате 'YYYY-MM-DD HH:MM:SS'.

вытянуто из mysql DATETIME, DATE и TIMESTAMP

использовать хорошо тот формат с которым удобно работать, я пользую timestamp который в виде привожу к тому формату времени в котором мне он нужен, с timestamp удобно проводить различные арифметические операции, удобно использовать там где наперед неизвестно в каком формате нужно будет выводить дату и время (например сначал число потом месяц или наоборот сначала месяц потом число) , однако не стоит забывать, что отсчет идёт от 1970 и кому нужна предистория пораньше - нужны разного рода ухищрения
я человек и мне свойственно ошибаться
yii@conference.jabber.ru
Аватара пользователя
timlar
Сообщения: 1382
Зарегистрирован: 2009.09.19, 17:49
Откуда: Украина, Днепропетровск
Контактная информация:

Re: Ввод и вывод времени формата(HH:mm) в БД

Сообщение timlar »

evgeniy123 писал(а):Может заодно подскажите в каком формате лучше хранить чтобы поменьше мороки было сейчас и потом ?
Datetime или timestamp
Twitter: @timlar_ua
evgeniy123
Сообщения: 401
Зарегистрирован: 2011.11.01, 17:29

Re: Ввод и вывод времени формата(HH:mm) в БД

Сообщение evgeniy123 »

timlar писал(а):
evgeniy123 писал(а):Может заодно подскажите в каком формате лучше хранить чтобы поменьше мороки было сейчас и потом ?
Datetime или timestamp
Спасибо. Прочитал.Узнать хотелось как это все вяжет с YII в целом с точки зрения масштабирование и скорости разработки ...
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Ввод и вывод времени формата(HH:mm) в БД

Сообщение yiijeka »

>Datetime или timestamp
или integer )
Узнать хотелось как это все вяжет с YII в целом с точки зрения масштабирование и скорости разработки ...
Выбор типа хранения времени мало влияет на маштабируемость и скорость разработки. Скорее на скорость работы с бд и удобство написания кода, выбор типа зависит от конкретных задач, для чего вообще нужно это время.
evgeniy123
Сообщения: 401
Зарегистрирован: 2011.11.01, 17:29

Re: Ввод и вывод времени формата(HH:mm) в БД

Сообщение evgeniy123 »

alexZT писал(а):а в базе поле времени часом не timestamp ? если так - то нужно Вашу дату перевести в timestamp и писать в базу метку времени
Сейчас нормально все выводить из БД. но когда пытаюсь сохранить то пишет:

Код: Выделить всё

array(1) {
  ["monday_from"]=>
  array(1) {
    [0]=>
    string(25) "Monday From must be time."
  }
}
FireBug (Post) :
..........
User[monday_from] 22:59
........................
User.php

Код: Выделить всё

....
array('monday_from','type','type'=>'time','timeFormat'=>'HH:mm'),
...
Не подскажите почему не проходит через правило ?
Аватара пользователя
TranceSmile
Сообщения: 562
Зарегистрирован: 2011.06.27, 19:04
Откуда: Украина
Контактная информация:

Re: Ввод и вывод времени формата(HH:mm) в БД

Сообщение TranceSmile »

Код: Выделить всё

...
array('monday_from','date','format'=>'HH:mm'),
...
 
Изображение
evgeniy123
Сообщения: 401
Зарегистрирован: 2011.11.01, 17:29

Re: Ввод и вывод времени формата(HH:mm) в БД

Сообщение evgeniy123 »

TranceSmile писал(а):

Код: Выделить всё

...
array('monday_from','date','format'=>'HH:mm'),
...
Запрос проходит но не устанавливает. Сбрасывает на

0000-00-00 00:00:00

:(
evgeniy123
Сообщения: 401
Зарегистрирован: 2011.11.01, 17:29

Re: Ввод и вывод времени формата(HH:mm) в БД

Сообщение evgeniy123 »

вообще решил через фильтр мою задачу/

User.php

Код: Выделить всё

........
 array('monday_from', 'filter', 'filter'=>array("DCustomFilters", "hourValid")),
......................
components/DCustomFilters.php

Код: Выделить всё

<?php
class DCustomFilters
{

    public function hourValid($str){
        $pattern  = "$pattern  = "/^([0-1][0-9]|[2][0-3]):([0-5][0-9])$/si" ;" ;
        if (preg_match($pattern ,$str )){
            $time = preg_split("/:/", $str);

        }
       return date("Y-m-d H:i:s", mktime($time[0], $time[1], 0, 12, 32, 1997));
    }

}
?>
если есть варианты получше то вылаживайте свои :)
chang
Сообщения: 125
Зарегистрирован: 2010.12.03, 20:01

Re: Ввод и вывод времени формата(HH:mm) в БД

Сообщение chang »

http://www.yiiframework.com/doc/api/1.1/CTypeValidator
array('monday_from', 'type', 'type'=>'time', 'timeFormat'=>'hh:mm'),
+
http://dev.mysql.com/doc/refman/5.0/en/time.html
Закрыто