Как установить значение для типа ввода "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))