[Помогите] Неправильно работает дата и время

Тема в разделе "OpenCart", создана пользователем Zalom, 2 фев 2018.

  1. Zalom

    Zalom

    Регистрация:
    18 мар 2017
    Сообщения:
    37
    Симпатии:
    1
    Здравствуйте. Есть задача создать расписание курсов обучения. У курса есть дата и время начала и окончания соответственно. Использую datatimepicker bootstrap 3. Вот год, месяц, число, час меняется и сохраняется в БД, а минуты не сохраняются. Из формы дата передается в виде строки, в Бд сохраняю переведя в Unix-время (strtotime). Подскажите пожалуйста почему не сохраняются измененные минуты?
     
  2. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    А как именно они не сохраняются? Остаётся прежнее значение или становятся нули?
     
    Master2KAZ нравится это.
  3. Zalom

    Zalom

    Регистрация:
    18 мар 2017
    Сообщения:
    37
    Симпатии:
    1
    Когда я устанавливаю дату, сначала появляется текущая, потом я ставлю нужную дату и время, все изменения сохраняются кроме минут. Они так и остаются равными текущим минутам.
     
  4. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    В таком случае проблема, видимо, в самом datatimepicker или получении данных из него.
    Проверьте, что у вас на входе в strtotime.
     
  5. Zalom

    Zalom

    Регистрация:
    18 мар 2017
    Сообщения:
    37
    Симпатии:
    1
    Да, так и получается. После strtotime, сохраняется неправильно. Datatimepicker передает дату в виде строки. Если дату в виде строки сохранять, то все правильно. Получается, что так и хранить?
     
  6. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    В этой строке минуты правильные?

    Если проблема возникает в процессе конвертации, то надо просто правильно конвертировать. Как выглядит строка из Datatimepicker?
     
  7. Zalom

    Zalom

    Регистрация:
    18 мар 2017
    Сообщения:
    37
    Симпатии:
    1
    15.02.2018 10:45 - в таком виде строка передается.
    К слову, именно так ее хотят видеть.
    Я нашел способ правильно конвертировать. Но выглядит он как то неуклюже.
    Код:
    $d_start='15.02.2018 10:45';
    $d_start1=explode(' ',$d_start);
    $d_start11=explode('.',$d_start1[0]);
    $day=$d_start11[0];
    $month=$d_start11[1];
    $year=$d_start11[2];
    $d_start12=explode(':',$d_start1[1]);
    $hour=$d_start12[0];
    $minute=$d_start12[1];
    $k=mktime($hour,$minute,0,$month,$day,$year);
    
    Как то иначе можно сделать?
     
    Последнее редактирование: 15 фев 2018
  8. Master2KAZ

    Master2KAZ

    Регистрация:
    25 окт 2014
    Сообщения:
    183
    Симпатии:
    72
    Я так и не понял, а чем strtotime не устраивает?
    PHP:
    $d_start='15.02.2018 10:45';
    $d_start1=explode(' ',$d_start);
    $d_start11=explode('.',$d_start1[0]);
    $day=$d_start11[0];
    $month=$d_start11[1];
    $year=$d_start11[2];
    $d_start12=explode(':',$d_start1[1]);
    $hour=$d_start12[0];
    $minute=$d_start12[1];
    $k=mktime($hour,$minute,0,$month,$day,$year);
    echo 
    $k // получаем 1518709500

    echo date("d.m.Y H:i"$k); //получаем 15.02.2018 10:45

    $m strtotime($d_start);
    echo 
    $m// получаем 1518709500

    echo date("d.m.Y H:i"$m); //получаем 15.02.2018 10:45
     
  9. Zalom

    Zalom

    Регистрация:
    18 мар 2017
    Сообщения:
    37
    Симпатии:
    1
    Мне нужно выбирать дату, для этого я использую datetimepicker. Когда я нажимаю на календарик, в поле появляется текущие дата и время ( допустим 15.02.2018 10:45). Но допустим, мне не надо текущее время, а нужно16.02.2018 8:30. Я выбираю нужное мне время, в обработчике с помощью strtotime получаю метку и записываю в БД. Когда стал проверять, то оказалось, что время у меня сохранено не 16.02.2018 8:30, а 16.02.2018 8:45. Стал выяснять на каком моменте это происходит, получилось что после strtotime время неправильное!
     
    Lasted edited by : 16 фев 2018
  10. Master2KAZ

    Master2KAZ

    Регистрация:
    25 окт 2014
    Сообщения:
    183
    Симпатии:
    72
    Покажите код поля, которое вы используете в качестве datetimepicker и код, где вы инициализируете datetimepicker
     
  11. Zalom

    Zalom

    Регистрация:
    18 мар 2017
    Сообщения:
    37
    Симпатии:
    1
    Код:
    <label class="col-sm-3 control-label">Дата начала</label>
    <div class="col-sm-5 input-group" id="startdatetimepicker1">';
    <input type="text" name="start" class="form-control" style="width:100%;"/>
    <span class="input-group-addon">
    <span class="glyphicon glyphicon-calendar"></span>
    </span>
    </div>
    
    <script>
       $('#startdatetimepicker1').datetimepicker({locale: 'ru'});
    </script>
    
     
    Последнее редактирование: 16 фев 2018
  12. Zalom

    Zalom

    Регистрация:
    18 мар 2017
    Сообщения:
    37
    Симпатии:
    1
    С этой ошибкой совсем зашел в тупик. Все удалил и сделал заново. Все получилось.