如何为输入类型“datetime-local”设置值?

2022-08-30 12:36:16

我试过这个:

<input type="datetime-local"  value="<?php echo $row['Time']; ?>" class="date" name="start" REQUIRED>

如何使用数据库中的数据设置此输入字段的值?
它不起作用!
我也需要使编辑成为可能。
还是我应该使用其他类型的输入?
来自数据库!$row['Time']


答案 1

我不知道里面有什么,但它应该如下:$row['Time']

定义

RFC 3339 中定义的有效日期时间,具有以下附加限定条件:

  • 日期/时间语法中的文字字母 T 和 Z 必须始终为大写
  • 相反,日期完全输出的生产被定义为四位或更多位数字,表示大于0的数字

例子

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

溶液

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

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

提交时使用<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); //convert to unix timestamp 
$newDate = date('Y-m-d\TH:i', $exampleDate); //format unix to date

$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));?> 

推荐