【问题标题】:How to convert html5 input type date and time to javascript datetime如何将html5输入类型日期和时间转换为javascript日期时间
【发布时间】:2014-05-13 19:52:07
【问题描述】:

我正在使用 html5 输入类型:日期和时间。 如何将表单输入类型转换为javascript对象日期(其中包括时间)?

这是我的代码的一部分:

<html>
    <head>
        <script type="text/javascript">
             function getDate(date, time)
             {
                  var theDate = new Date();
                  ....
             }
        </script>
    </head>
    <body>
        <form name="form_task">
             Date:<input type="date" name="task_date" />
             Time:<input type="time" name="task_time" />
             <input type="button" onclick="getDate(task_date.value, task_time.value)" />
        </form>
    </body>
</html>

【问题讨论】:

    标签: javascript html datetime


    【解决方案1】:

    您需要做的就是从两个输入中提取值,将它们连接起来,然后将它们传递给一个日期对象。

    小提琴: http://jsfiddle.net/P4bva/

    HTML

    Date:<input id="date" type="date" name="task_date" />
    Time:<input id="time" type="time" name="task_time" />
    <button id="calc">Get Time</button>
    

    JS

    var calc = document.getElementById("calc")
    
    calc.addEventListener("click", function() {
        var date = document.getElementById("date").value,
            time = document.getElementById("time").value
    
        console.log(new Date(date + " " + time))
    })
    

    【讨论】:

    • 虽然它适用于大多数浏览器。对于某些语言环境和输入设置,它似乎不适用于 Safari。
    • 我可以看到它在 iOS safari 上运行。您能否详细说明哪些语言环境或输入不起作用?
    • 适用于 Chrome 和 Firefox,但不适用于 IOS Safari。 Sarari 中的 javascript 引擎无法解析 new Date("2021-12-11 15:33") ,它在那里返回“Invalid Date”。
    【解决方案2】:

    你可以这样做:

    <!DOCTYPE html>
    <style type="text/css">
    label {
      width:150px;
      display:inline-block;
    }
    </style>
    
    <label for="admissionDate">admission date</label>
    <input id="admissionDate" name="admissionDate" type="date" />  
    <br />
    <label for="graduationDate">graduation date</label>
    <input id="graduationDate" name="graduationDate" type="date" /> 
    <br />
    <label for="birthDate" >birth date</label>
    <input id="birthDate" type="date" name="birthDate" />
    <br />
    <button id="age">Get Age</button>
    
    <script type="text/javascript">
    var doc = document;
    var admission = doc.getElementById("admissionDate");
    var graduation = doc.getElementById("graduationDate");
    var birth = doc.getElementById("birthDate");
    var age = doc.getElementById("age");
    
    age.addEventListener("click", function(){
    var gradDate = new Date(graduation.value);
    var birthDate = new Date(birth.value);
    var dateDiff = new Date(gradDate - birthDate);
    var YEAR_OFFSET = 1970;
    alert("This person is " + (dateDiff.getFullYear()-YEAR_OFFSET) + " years old");
    });
    </script>
    

    【讨论】:

      【解决方案3】:

      **这就是我的做法**

         var calc = document.getElementById("calc")
      
      calc.addEventListener("click", function() {
          var date = document.getElementById("date").value,
              time = document.getElementById("time").value
          
         var hi = new Date(date + " " + time).toISOString();
      
      // Set the date we're counting down to
      var countDownDate = new Date(hi).getTime();
      
      // Update the count down every 1 second
      var x = setInterval(function() {
      
        // Get today's date and time
        var now = new Date().getTime();
          
        // Find the distance between now and the count down date
        var distance = countDownDate - now;
          
        // Time calculations for days, hours, minutes and seconds
        var days = Math.floor(distance / (1000 * 60 * 60 * 24));
        var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
        var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
        var seconds = Math.floor((distance % (1000 * 60)) / 1000);
          
        // Output the result in an element with id="demo"
        document.getElementById("demo").innerHTML = days + "d " + hours + "h "
        + minutes + "m " + seconds + "s ";
          
        // If the count down is over, write some text 
        if (distance < 0) {
          clearInterval(x);
          document.getElementById("demo").innerHTML = "وقت المهمة حان  ";
        }
      }, 1000);})
      <p id="demo"></p>
      Date:<input id="date" type="date" name="task_date" />
      Time:<input id="time" type="time" name="task_time" />
      <button id="calc">Get Time</button>
      </div>

      【讨论】:

        【解决方案4】:

        dessa maneira voce não tera o questiona de aparecer uma data no campo de data e no objeto Date estar com uma data diferente.

        这样您就不会有日期出现在日期字段中的问题,并且 Date 对象有不同的日期。

        let datainicio = $("#data-inicio").val();
        let datafim = $("#data-fim").val();
        
        if (!datainicio || !datafim) {
            bootbox.alert(DATA_INICIO_DATA_FIM_VAZIAS);
            return;
        }
        
        // the month is 0-indexed
        let dateinicio = new Date(datainicio.slice(0, 4), Number(datainicio.slice(5, 7)) - 1, datainicio.slice(8, 10));
        let datefim = new Date(datafim.slice(0, 4), Number(datafim.slice(5, 7)) - 1, datafim.slice(8, 10));
        
        console.log("Date(datainicio): " + dateinicio);
        console.log("Date(datafim) : " + datefim);
        

        【讨论】:

          【解决方案5】:

          试试这个

          <!DOCTYPE html>
          <html>
          <head>
          <script>
          function startTime() {
              var today=new Date();
              var h=today.getHours();
              var m=today.getMinutes();
              var s=today.getSeconds();
              m = checkTime(m);
              s = checkTime(s);
              document.getElementById('txt').innerHTML = h+":"+m+":"+s;
              var t = setTimeout(function(){startTime()},500);
          }
          
          function checkTime(i) {
              if (i<10) {i = "0" + i};  // add zero in front of numbers < 10
              return i;
          }
          </script>
          </head>
          
          <body onload="startTime()">
          
          <div id="txt"></div>
          
          </body>
          </html>
          

          【讨论】:

          • 这与问题有什么关系?我问过如何将 input-type-data 和 input-type-time 解析为 JS Date() 对象
          猜你喜欢
          • 2011-10-05
          • 2014-11-15
          • 2012-08-03
          • 1970-01-01
          • 1970-01-01
          • 2021-04-13
          • 1970-01-01
          相关资源
          最近更新 更多