设置HTML类型时间的输入打印无效的输入时间

Setting HTML input of type time prints invalid input time

在这个简单的html <input type="time" id="tm" name="tm">,我尝试使用document.getElementById('tm').valueAsDate = new Date();设置时间,但是时间设置为“23:45:04.123”,导致输入错误。我收到工具提示“请 select 一个有效值....”

我在 Firefox 94.0.2 和 Edge 96.0.1054.34 中试过 - 结果相同。如果重要的话,我使用的是德语 Windows 10 x64。

这是我的 fiddle:

https://jsfiddle.net/tg0v43m9/1/

使用此代码

<input type="time" id="tm" name="tm">
<script>

    var today = new Date();

    var time =today.getHours()+":"+today.getMinutes() ;
    document.getElementById("tm").value = time;

</script>

您可以尝试单独获取 hours & minutes 部分,然后将它们连接在一起以获得您想要的格式。

var now = new Date(Date.now());

// Getting Hours from the time
var hours = now.getHours();

// Getting minutes from the time
var minutes = "0" + now.getMinutes();

// Displaying time in H:M format
var time = hours + ':' + minutes.substr(-2);
  
document.getElementById('tm').value = time; 
// document.getElementById('tm').value = "23:45"; // works
<input type="time" id="tm" name="tm">

你可以使用 moment


var now = new Date(Date.now());
document.getElementById('tm').valueAsDate = moment(now, ["h:mm A"]).format("HH:mm");

同时检查这些选项。

var now = new Date(new Date().toLocaleString("en-US", {
    day: '2-digit',
    month: '2-digit',
    year: 'numeric',
    hour: '2-digit',
    minute: '2-digit',
    second: '2-digit',
    hour12: true,
}));
document.getElementById('tm').valueAsDate = now;