使用JavaScript或jQuery自动填充当前时间

3

我正在尝试使用JavaScript和/或jQuery自动填充时间类型字段中的时间;而不是日期。它可以成功地自动填充。但是,我想让它自动填充当前时间而不是指定的时间。(例如“17:40:11”)

如何从JavaScript或jQuery获取当前时间并在输入时间字段中自动填充?

下面是我的代码以及使用JavaScript时遇到的错误。

我已经尝试使用jQuery和new Date($.now());,但我会遇到类似的错误,而我的时间是一堆数字(例如123435334)。

HTML

<input type="time" value="" />

JavaScript

$(document).ready(function myTimer() {
      
    var now = new Date(Date.now());
    var f = now.getHours() + ":" + now.getMinutes() + ":" + now.getSeconds();           
    $("input[type=time]").val(f);
    
})

错误

jquery.js:7373 :

指定的值“7:13:40”不符合所需格式。格式应为“HH:mm”、“HH:mm:ss”或“HH:mm:ss.SSS”,其中HH是00-23,mm是00-59,ss是00-59,而SSS是000-999。


我认为您需要在时间的所有小时、分钟和秒组件上添加前导零。 - rink.attendant.6
这个问题之前已经有答案了。请参考这篇文章 - Yuri
看看这个错误:"而 SSS 是 000-999。" 但是如果你在控制台中运行 new Date(Date.now()).getHours() + ":" + new Date(Date.now()).getMinutes() + ":" + new Date(Date.now()).getSeconds();,你会注意到秒数是以不同的格式显示的。 - frenchie
你想要与这个一样的效果吗?http://jsbin.com/zadasunaru/1/ - bmscomp
@Yuri,这个与你发布的链接不同。这是关于时间输入字段的问题… 不是日期… 这是两个不同的问题。无论如何,还是感谢你的帮助。 - albert rios
2个回答

3

如果缺少零,请添加……想法:

if(hours<10) hours = "0"+hours;

$(document).ready(function myTimer() {
    var now = new Date(Date.now());
    var f = leadZero(now.getHours()) + ":" + leadZero(now.getMinutes()) + ":" + leadZero(now.getSeconds());           
    $("input[type=time]").val(f);

})

function leadZero(_something) {    
    if(parseInt(_something)<10) return "0"+_something;
    return _something;//else    
}

0
你的问题是getHours()返回12小时格式。有几种方法可以解决它。你可以检查小时数是否小于10,然后添加前导'0'。但是,我更愿意给你这个链接:

http://blog.stevenlevithan.com/archives/date-time-format

在这里您可以了解有关JavaScript日期格式化的更多信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接