从日期对象中获取小时:分钟:秒的方法是什么?

36

如何从日期对象中获取 hh:mm:ss?

var d = new Date(); // for now
datetext = d.getHours()+":"+d.getMinutes()+":"+d.getSeconds();

有时候我会得到以下结果:

12:10:1
应该是哪一个。
12:10:01

我假设这也会发生在小时和分钟上。

因此,我需要这个。

01:01:01

不是这样的 1:1:1


2
测试每个值是否小于10并在前面添加一个零,这个怎么样? - Pointy
是的,你说得对 - 想得真好! - Run
2
请看这里:https://dev59.com/VW025IYBdhLWcg3wl3K- - rd3n
4个回答

81

解决方案 - (简短版)

datetext = d.toTimeString().split(' ')[0]

说明:

toTimeString 返回完整的时间。 我们通过空格将其分割以仅获取时间组件,然后取第一个有用的值。 :)

完整流程:

d = new Date();
// d is "Sun Oct 13 2013 20:32:01 GMT+0530 (India Standard Time)"
datetext = d.toTimeString();
// datestring is "20:32:01 GMT+0530 (India Standard Time)"
// Split with ' ' and we get: ["20:32:01", "GMT+0530", "(India", "Standard", "Time)"]
// Take the first value from array :)
datetext = datetext.split(' ')[0];

注意:这不需要您包含任何外部文件或库,因此执行所需时间将更快。


谢谢你,提供简短而有效的解决方案。 :) - Bhuvan Arora
datetext = datetext.split(' ')[0];这会返回"20:32:01",是否可能只返回HH:MM而不是HH:MM:SS?@sunny-r-gupta - Baadshah
@adi,好的,一旦你有HH:MM:SS,只需删除最后3个字符即可。 - Sunny R Gupta

19

我建议您查阅一些日期/时间库。 Moment.js 是一个很好的例子。

你可以简单地按以下方式操作:

var d = new Date();
var formatteddatestr = moment(d).format('hh:mm:ss a');

这里是一个来自fiddle的示例


那个小提琴给了我“04:07:37 pm”,而不是问题中要求的“16:07:37”。 - Ivan
我建议你仔细阅读文档。如果你更改格式化程序,你肯定可以按照自己的方式进行操作。 - Jay Mayu
1
尝试使用HH而不是hh来表示24小时制时间。 - cabhara
1
'a' 表示上午/下午。'A' 表示AM/PM。 - Usman Farooq

16
你可以使用这段代码片段。我还将其添加到jsfiddle中,并添加了类型安全的注释,请务必查看fiddle。
如果您正在使用jQuery,请在ready函数内调用它。否则,您可以使用普通JavaScript来更新您字段的值。
$(document).ready(function(){
    var d = new Date();
    var formatted_time = time_format(d);
    $('#yourTimeField').text(formatted_time);
});

将以下两个方法添加到您的脚本中(您也可以像jsfiddle代码片段中一样将其粘贴到单个文件中):

function time_format(d) {
    hours = format_two_digits(d.getHours());
    minutes = format_two_digits(d.getMinutes());
    seconds = format_two_digits(d.getSeconds());
    return hours + ":" + minutes + ":" + seconds;
}

function format_two_digits(n) {
    return n < 10 ? '0' + n : n;
}

就这样了 :) 希望有所帮助 :)


1
我更喜欢这个答案,而不是被采纳的那个,因为这里使用了真实的小时、分钟和秒,而不是“盲目修剪”字符串。 - Matteo Bononi 'peorthyr'
请注意,通过 minutes =,您正在设置全局命名空间内的分钟数,我认为 var minutes = 更好(或在 ES6 中使用 const minutes =)。 - Tomáš Kafka

1
你也可以尝试使用http://momentjs.com/。这是一个JavaScript日期库,用于解析、验证、操作和格式化日期。

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