输入类型=显示错误时区的时间

时间:2019-12-03 22:22:42

标签: javascript html

使用<input type="time">并用valueAsDate设置时间时,浏览器以GMT而不是本地时间显示时间,是否可以更改此行为?我希望浏览器显示本地时间。

如果您不使用格林尼治标准时间,则应该看到输入的小时与p元素中的小时不同

(我在Chrome和Firefox中尝试过此操作)

let date = new Date;
document.querySelector("input").valueAsDate = date;
document.querySelector("p").innerText = date;
<input type="time">
<p></p>

3 个答案:

答案 0 :(得分:1)

这是预期的行为。根据{{​​3}}的HTML规范:

  

在给定Date对象输入的情况下,将Date对象转换为字符串的算法如下:返回一个有效的时间字符串,该字符串代表由input表示的UTC时间分量。

如果要显示本地化的时间字符串,应首先尝试转换为字符串(请参见),或使用toLocaleTimeString

答案 1 :(得分:0)

要获取本地时间,您应该创建date对象并在输入字段中设置小时和分钟。请检查我的解决方案。

$(document).ready(function(){    
 
    setInterval(updateTime,1000);
    
    function updateTime(){
        //create date instance to get now time 
        var date = new Date();
        hours = date.getHours();
        minutes = date.getMinutes();
        seconds = date.getSeconds();
        
        //add extra zero if the minutes is less than 2 digits
        if(hours < 10){
          hours = '0' + hours;
        }

        //add extra zero if the minutes is less than 2 digits
        if(minutes < 10){
          minutes = '0' + minutes;
        }
      
        $('input[type="time"]').each(function(){
            $(this).attr({'value': hours + ':' + minutes + ':' + seconds});
        });
      
      //document.getElementById("myTime").value = hours+":"+minutes+":"+seconds;
      
    }
 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="myTime" type='time'/>
<p></p>

答案 2 :(得分:0)

select * from X where b in (111,777,888)在这里可以提供帮助:

.loLocaleString
let date = new Date;
document.querySelector("input").value = date.toLocaleString("sv-SE", {
    hour: "2-digit",
    minute: "2-digit",
    second: "2-digit"
});
document.querySelector("p").innerText = date;

我写了一篇有关此问题on dev.to的小文章。