如何为输入类型"datetime-local"设置一个值?

Jba*_*ton 17 html php datetime datetime-format

我试过这个:

<input type="datetime-local"  value="<?php echo $row['Time']; ?>" class="date" name="start" REQUIRED>
Run Code Online (Sandbox Code Playgroud)

如何使用数据库中的数据设置此输入字段的值?
它不起作用!!
我也需要编辑它.
或者我应该使用其他类型的输入?$行[ '时间']; 来自数据库!

Rha*_*era 20

提交时<form>使用<input type="datetime-local">

您将获得的值格式如下所示。

2019-09-06T00:21

在输入类型框中设置新值。

您必须使用:

date('Y-m-d\TH:i', strtotime($exampleDate)) //2019-08-18T00:00
Run Code Online (Sandbox Code Playgroud)

解决方案示例

$exampleDate = "2019-08-18 00:00:00";//sql timestamp
$exampleDate = strtotime($exampleDate);
$newDate = date('Y-m-d\TH:i', $exampleDate);
Run Code Online (Sandbox Code Playgroud)

或者

$exampleDate = "2019-08-18 00:00:00";//sql timestamp
$newDate = date('Y-m-d\TH:i', strtotime($exampleDate));
Run Code Online (Sandbox Code Playgroud)

如果你不使用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));?> 
Run Code Online (Sandbox Code Playgroud)


Kar*_*ica 16

我不知道究竟是什么,$row['Time']但它应该如下:

定义

RFC 3339中定义的有效日期时间,具有以下附加资格:

  • 日期/时间语法中的字面字母T和Z必须始终为大写
  • 而将日期全部生产定义为表示大于0的数字的四个或更多个数字

例子

  • 1990-12-31T23:59:60Z
  • 1996-12-19T16:39:57-08:00

要在PHP中创建RFC 3339格式,您可以使用:

echo date('Y-m-d\TH:i:sP', $row['Time']);
Run Code Online (Sandbox Code Playgroud)

或以其他方式:

echo date("c", strtotime($row['Time']));  
Run Code Online (Sandbox Code Playgroud)

或者如果你喜欢客观风格:

echo (new DateTime($row['Time']))->format('c');
Run Code Online (Sandbox Code Playgroud)

在你的代码中

所以在你的代码中它看起来如下:

<input type="datetime-local"  value="<?php echo date('Y-m-d\TH:i:sP', $row['Time']); ?>" class="date" name="start" REQUIRED>
Run Code Online (Sandbox Code Playgroud)

要么

<input type="datetime-local"  value="<?php echo date("c", strtotime($row['Time'])); ?>" class="date" name="start" REQUIRED>
Run Code Online (Sandbox Code Playgroud)

手册

  • 我遇到了同样的问题,您的解决方案有效,只是没有 P: `echo date('Ymd\TH:i:s', $time);` (4认同)
  • 我看到第二个之前有一个点.所以它可能会起作用:`echo date('Ymd\TH:i:s',$ row ['Time']);` (3认同)
  • `date("c")` 提供了时区,因此不起作用。 (2认同)

Moh*_*kat 7

很简单,为我工作首先将您的php值转换为这种格式

 <?php  $datetime = new DateTime($timeinout[0]->time_in);   ?>
Run Code Online (Sandbox Code Playgroud)

然后在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" /> 
Run Code Online (Sandbox Code Playgroud)

这会将您的值设置为输入元素


小智 6

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
Run Code Online (Sandbox Code Playgroud)

对我有用的是这个

$t = $row['Time'];
date('Y-m-d\TH:i:s', strtotime($t)); // This got it perfectly
Run Code Online (Sandbox Code Playgroud)

但是,由于解释,我仍然投票赞成。


dan*_*n-I 6

截至 2019 年,使用 Google Chrome 时,上述解决方案均不适用于我Version 78.0.3904.70 (Official Build) (64-bit)

对我有用的是。

<input type="datetime-local" value="2017-06-13T13:00">
Run Code Online (Sandbox Code Playgroud)

如您所见,格式为2017-06-13T13:00Y-m-dTH:i

从 PHP 开始,你可以这样做。

<input type="datetime-local" value="<?php echo Date('Y-m-d\TH:i',time()) ?>">
Run Code Online (Sandbox Code Playgroud)

希望这会节省某人的时间。:)