Здравствуйте. Есть задача создать расписание курсов обучения. У курса есть дата и время начала и окончания соответственно. Использую datatimepicker bootstrap 3. Вот год, месяц, число, час меняется и сохраняется в БД, а минуты не сохраняются. Из формы дата передается в виде строки, в Бд сохраняю переведя в Unix-время (strtotime). Подскажите пожалуйста почему не сохраняются измененные минуты?
Когда я устанавливаю дату, сначала появляется текущая, потом я ставлю нужную дату и время, все изменения сохраняются кроме минут. Они так и остаются равными текущим минутам.
В таком случае проблема, видимо, в самом datatimepicker или получении данных из него. Проверьте, что у вас на входе в strtotime.
Да, так и получается. После strtotime, сохраняется неправильно. Datatimepicker передает дату в виде строки. Если дату в виде строки сохранять, то все правильно. Получается, что так и хранить?
В этой строке минуты правильные? Если проблема возникает в процессе конвертации, то надо просто правильно конвертировать. Как выглядит строка из Datatimepicker?
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); Как то иначе можно сделать?
Я так и не понял, а чем 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 ; // получаем 1518709500echo date("d.m.Y H:i", $k); //получаем 15.02.2018 10:45$m = strtotime($d_start);echo $m; // получаем 1518709500echo date("d.m.Y H:i", $m); //получаем 15.02.2018 10:45
Мне нужно выбирать дату, для этого я использую datetimepicker. Когда я нажимаю на календарик, в поле появляется текущие дата и время ( допустим 15.02.2018 10:45). Но допустим, мне не надо текущее время, а нужно16.02.2018 8:30. Я выбираю нужное мне время, в обработчике с помощью strtotime получаю метку и записываю в БД. Когда стал проверять, то оказалось, что время у меня сохранено не 16.02.2018 8:30, а 16.02.2018 8:45. Стал выяснять на каком моменте это происходит, получилось что после strtotime время неправильное!
Покажите код поля, которое вы используете в качестве datetimepicker и код, где вы инициализируете datetimepicker
Код: <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>