显示的时间值与输入的值不同

时间:2014-10-31 11:10:14

标签: javascript

以下代码提供错误的输出时间

<script type="text/javascript">
    function validate()
     {
         var r = Date.parse(document.getElementById("dates").value);
         var r1 = new Date(r);
         document.write(r1);
         return  false;
     }   
</script>

<form name="myForm" method="post" onsubmit= "return(validate());">
    Name: <input type="text" name="name"><br>
    Date: <input  type="datetime-local" id="dates" name="dates">
    <br/>
    <INPUT TYPE="submit"  VALUE="Submit" >
</form>
提前谢谢。如果输入时间是9:30,则输出为11:00

1 个答案:

答案 0 :(得分:1)

输出可能是正确的 <input type="datetime-local">根据您的系统日期时间设置存储值(即:您的时区中的日期时间而不是UTC时间)。
因此,在通过Date.parse读取值时,实际上是按照您的时区调整了毫秒数。即您的时区偏移量将从输入的日期时间中加/减,以获得绝对毫秒值 但是当您使用var r1 = new Date(r)再次创建日期时,实际上是以给定的毫秒初始化日期,并将时区设置为系统时区。因此,由于Date.parse的返回值,它将引入等于您的时区偏移的偏移量。 通过查看您的输入和输出,您的时区似乎是GMT + 1:30:)