Как установить значение для типа ввода "datetime-local"?
Я попробовал это:
<input type="datetime-local" value="<?php echo $row['Time']; ?>" class="date" name="start" REQUIRED>
Как я могу установить значение этого поля ввода с данными из базы данных?
Это не работает!
Мне нужно также изменить его.
Или я должен использовать другой тип ввода? $ Строки [ 'Время']; из базы данных!
Ответы
Ответ 1
Я не знаю точно, что находится в $row['Time']
, но это должно быть так:
Определение
Действительная дата и время, определенные в RFC 3339 с этими дополнительные квалификации:
- буквенные буквы T и Z в синтаксисе даты/времени всегда должны быть в верхнем регистре
- вместо даты производства полностью определяется как четыре или более цифр, представляющих число больше 0
Examples
- 1990-12-31T23: 59: 60Z
- 1996-12-19T16: 39: 57-08: 00
Решение
Для создания формата RFC 3339 в PHP вы можете использовать:
echo date('Y-m-d\TH:i:sP', $row['Time']);
или другим способом:
echo date("c", strtotime($row['Time']));
или если вы предпочитаете объективный стиль:
echo (new DateTime($row['Time']))->format('c');
В вашем коде
Так что в вашем коде это будет выглядеть следующим образом:
<input type="datetime-local" value="<?php echo date('Y-m-d\TH:i:sP', $row['Time']); ?>" class="date" name="start" REQUIRED>
или
<input type="datetime-local" value="<?php echo date("c", strtotime($row['Time'])); ?>" class="date" name="start" REQUIRED>
Руководство
Ответ 2
это просто то, что и для меня сначала преобразовать значение php в этот формат
<?php $datetime = new DateTime($timeinout[0]->time_in); ?>
то в значение элемента ввода html этот формат используется
<input type="datetime-local" id="txt_time_in" placeholder="Time In" name="timein" value = "<?php echo $datetime->format('Y-m-d\TH:i:s'); ?>" class="form-control" />
это установит ваше значение для элемента ввода
Ответ 3
Вы можете использовать
date('Y-m-d\TH:i'); //Example result: '2017-01-01T01:01'
если использовать \T вместо T (не работает)
date('Y-m-dTH:i'); //Example result: '2017-01-01UTC01:01'
Ответ 4
Ответ Karol Gasienica - отличное объяснение, но почему-то у меня не получилось даже в их ответах
date('Y-m-d\TH:i:s', $row['Time']); //Gives me 1970-01-01 00:00
date('Y-m-d\TH:i:sP', $row['Time']); //Gives me no display
date("c", strtotime($row['Time'])); //No display too
Что у меня сработало, так это
$t = $row['Time'];
date('Y-m-d\TH:i:s', strtotime($t)); // This got it perfectly
Однако я все равно проголосовал за объяснение.
Ответ 5
$tripid=$_REQUEST['tripid'];
$sql="SELECT * FROM tripdetails WHERE trip_id='".$tripid."'";
$trpresult=mysqli_query($connect,$sql);
if(mysqli_num_rows($trpresult)==1)
{
$trpdetails=mysqli_fetch_assoc($trpresult);
}
$trpstartdate = substr_replace($trpdetails['trip_start_date'],T,11,0);
$string = preg_replace('/\s+/', '', $trpstartdate);
Это Html часть
<input type="datetime-local" name="trip_start_date" id="cal" value="<?php echo $string?>">
Ответ 6
При отправке <form>
с помощью <input type="datetime-local">
формат значения, который вы получите, выглядит следующим образом.
2019-09-06T00:21
Чтобы установить новое значение в поле ввода типа.
Вы должны использовать:
date('Y-m-d\TH:i', strtotime($exampleDate)) //2019-08-18T00:00
Пример решения:
$exampleDate = "2019-08-18 00:00:00";//sql timestamp
$exampleDate = strtotime($exampleDate);
$newDate = date('Y-m-d\TH:i', $exampleDate);
или
$exampleDate = "2019-08-18 00:00:00";//sql timestamp
$newDate = date('Y-m-d\TH:i', strtotime($exampleDate));
Если вы не используете strtotime()
, вы получите ошибку
Примечание. Обнаружено неверно сформированное числовое значение
Испытано:
- $exampleDate = 2019-08-18 00:00:00 ;
- //Not Working - output(1970-01-01T01:33:39)
- <?php echo date('Y-m-d\TH:i:s', $exampleDate);?>
- //Not Working - output(1970-01-01T01:33:39+01:00)
- <?php echo date('Y-m-d\TH:i:sP', $exampleDate);?>
- //Not Working - output(2019-08-18T00:00:00+02:00)
- <?php echo date("c", strtotime($exampleDate));?>
- //Not Working - output(2019-09-23T19:36:01+02:00)
- <?php echo (new DateTime($row['Time']))->format('c');?>
- //Working Perfect - output(2019-08-18T00:00:00)
- <?php echo date('Y-m-d\TH:i:s', strtotime($exampleDate));?>
Ответ 7
Это преобразует datetime из базы данных в datetime-local
str_replace(" ","T",substr_replace($string ,"", -3))