【问题标题】:How to set a value for the input type 'datetime-local'?如何为输入类型“datetime-local”设置值?
【发布时间】:2017-04-12 02:56:24
【问题描述】:

我试过这个:

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

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

【问题讨论】:

  • $row['Time'];中的内容
  • 您需要提供更多上下文,而不是仅仅说“它不起作用”。以什么方式不起作用?你用什么来服务页面?您使用的是什么网络浏览器?你期待看到什么?您遵循什么示例/文档导致您尝试这样做?
  • 检查我的解决方案,如果可行,请接受我的回答 :) 谢谢!
  • $row['Time'] 得到值:2016-11-18 12:00:00
  • 现在检查我已经更新了我的答案,以及如何在你的代码中做到这一点。

标签: php html datetime datetime-format


【解决方案1】:

我不确切知道$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']);

或以另一种方式:

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>

手动

【讨论】:

  • 它不填写值,它只在我这样做时起作用:&lt;input type="datetime-local" value="1985-04-12T23:20:50.52" class="date" name="start" REQUIRED&gt;
  • 我看到秒之前有一个点。所以它可能会起作用:echo date('Y-m-d\TH:i:s', $row['Time']);
  • 我遇到了同样的问题,您的解决方案有效,只是没有 P:echo date('Y-m-d\TH:i:s', $time);
  • 试试这个
  • date("c") 提供时区,因此不起作用。
【解决方案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】:
      $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?>">
      

      【讨论】:

        【解决方案5】:

        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
        

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

        【讨论】:

          【解决方案6】:

          当使用&lt;input type="datetime-local"&gt;提交&lt;form&gt;

          你会得到的值格式是这样的。

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

          【讨论】:

          • @MdRehan 很高兴为您提供帮助。
          【解决方案7】:

          这会将日期时间从数据库转换为本地日期时间

          str_replace(" ","T",substr_replace($string ,"", -3))

          【讨论】:

            【解决方案8】:

            截至 2019 年,使用谷歌浏览器 Version 78.0.3904.70 (Official Build) (64-bit)987654321@ 时,上述解决方案均不适合我

            对我有用的是。

            <input type="datetime-local" value="2017-06-13T13:00">
            

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

            对于 PHP,您可以这样做。

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

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

            【讨论】:

              【解决方案9】:

              更好地使用时区功能

              function getCurrentDateTime(){
                  $date = new DateTime();
                  $date->setTimezone(new DateTimeZone('GMT+6')); //Time Zone GMT +6
                  $dt= $date->format('Y-m-d\TH:i:s');
                  return $dt;
              }
              

              【讨论】:

                【解决方案10】:

                试试看:

                <input type="datetime-local"  value="<?php $row['Time'] = preg_replace("/\s/",'T',$row['Time']); echo $row['Time']?>" class="date" name="start" REQUIRED>
                

                【讨论】:

                  【解决方案11】:

                  为我工作的简单方法是

                  <input  type="datetime-local"  value="<?= str_replace(' ', 'T', $date) ?>" name="date"  required />
                  

                  【讨论】:

                    【解决方案12】:

                    试试看。我在 Bootstrap 4 中得到了这一点。(谷歌翻译:prueba con eso,a mi me sale con eso en Bootstrap 4。)

                    <input class="form-control" type="datetime-local" name="fecha_e" id="fecha_e" value=" 
                    <?php echo date('Y-m-d\TH:i', strtotime($data['fecha_e_tarea'])); ?>" required>
                    

                    【讨论】:

                    • 请用英文发帖
                    • 请用英文。
                    • 欢迎来到 Stack Overflow。请用英文写下你的答案,因为 Stack Overflow 是English only site
                    【解决方案13】:

                    对于 2021 年的每个人来说,工作格式是 Y-m-d\TH:i 所有其他旧格式只是一个hussel。 如果您使用的是碳库

                     \Carbon\Carbon::parse($data->chosen_date,$timezone)->format('Y-m-d\TH:i')
                    

                    之后,您可以像这样传递给值 如果使用 ajax 或 fetch api

                    document.getElementById('chosen_date').value = data.chosen_date
                    

                    【讨论】:

                      【解决方案14】:

                      最简单的方法!这是使用 php 为 type="datetime-local" 的输入字段设置值的方法 在 type="datetime-local" 中使用 php 设置值

                      $date_now_time = date("Y-m-d H:i:s", strtotime('+5 hours'));
                      $from_for_val=  date("Y-m-d\TH:i:s", strtotime($date_now_time));
                      

                      下面是 type="datetime-local" 的 html 表单输入字段及其显示如何在输入字段内设置值

                         <input type="datetime-local" name="submit_from" value="<?=$from_for_val;?>" >
                         
                      

                      【讨论】:

                        猜你喜欢
                        • 2018-08-06
                        • 2016-05-07
                        • 1970-01-01
                        • 2014-09-02
                        • 1970-01-01
                        • 1970-01-01
                        • 2018-01-14
                        • 2020-02-08
                        • 1970-01-01
                        相关资源
                        最近更新 更多