2014-10-31 29 views
0

下面的代码是给错了输出时间提前显示的时间值不一样输入的值

<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

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

+0

谢谢你。我将系统时间更改为(UTC)协调世界时。现在工作 – 2014-10-31 11:58:22