在输入中不返回日期

时间:2019-02-26 11:29:44

标签: php html

我想始终在input中显示前三分之一,为此,我这样做:

$dia = new DateTime();
$dia->modify( 'previous tuesday' );
$terca = date($dia->format('d-m-Y'));

然后我想在$terca的{​​{1}}中显示变量value,但仅在变量input type date中不显示:

datetime

每当我运行页面时,都会收到以下警告:

  

指定的值“ 19-02-2019”不符合要求   格式为“ yyyy-MM-dd”。

我正在尝试以这种方式<td style="float:center"> <input type="date" name= "data" value="<?php echo $terca?>"></td> ,但是我仍然遇到相同的问题

3 个答案:

答案 0 :(得分:2)

错误消息立即告诉您问题所在:

  

指定的值“ 19-02-2019”不符合要求的格式“ yyyy-MM-dd”

只需更改格式(将Y放在前面):

$terca = date($dia->format('Y-m-d'));

应该解决您的问题。

答案 1 :(得分:2)

将format('d-m-Y')更改为format('Y-m-d')

$dia = new DateTime();
$dia->modify( 'previous tuesday' );
$terca = date($dia->format('Y-m-d'));

然后尝试:

<input type="date" name= "data"  value="<?php echo $terca?>">

答案 2 :(得分:1)

错误消息告诉您输入到输入框value中的字符串无效。

documented一样,“日期”输入的value必须始终以yyyy-mm-dd格式指定。这与显示给用户的格式无关(根据用户的浏览器区域设置选择)。

您可以使用正确的PHP日期格式字符串来修复它,如下所示:

PHP:

$dia = new DateTime();
$dia->modify( 'previous tuesday' );
$terca = $dia->format('Y-m-d');

<input type="date" name="data" value="<?php echo $terca?>">

PHP的可运行演示:http://sandbox.onlinephpfunctions.com/code/7045183fd11b5a2e29d5d9fa80f0910cad18d671

使用PHP输出的字符串运行https://jsfiddle.net/0mqokve6/


P.S。因为$dia已经是一个DateTime对象,并且format()已经输出了一个字符串,将其包装在date()函数中是多余的。

P.P.S。日期控件不允许使用其他格式的字符串的原因总是存在歧义的可能性。例如在许多情况下,dd-mm-yyyy可能无法与mm-dd-yyyy区分开,例如01-03-2019。在这种情况下,浏览器不可能知道预期的日期。 yyyy-mm-dd是明确的,因此始终用于传达实际值。然后可以向用户显示他们在文化上更熟悉的格式。