【问题标题】:How to get hh:mm:ss from date object? [duplicate]如何从日期对象中获取 hh:mm:ss? [复制]
【发布时间】:2013-10-13 14:38:56
【问题描述】:

如何从日期对象中获取这个 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

【问题讨论】:

标签: javascript date


【解决方案1】:

解决方案 -(tl;dr 版本)

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];

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

【讨论】:

  • 感谢您提供简短而甜蜜的解决方案。 :)
  • >>datetext = datetext.split(' ')[0];这返回“20:32:01”,是否只能 HH:MM 而不是 HH:MM:SS ? @sunny-r-gupta
  • @adi ,当然,一旦你有 HH:MM:SS,只需删除最后 3 个?‍♂️
【解决方案2】:

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

你可以简单地做如下

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

这是example from fiddle

【讨论】:

  • 那个小提琴给了我“04:07:37 pm”而不是问题中要求的“16:07:37”。
  • 我建议你仔细阅读文档。当然,如果您更改格式化程序,您可以按照您想要的方式进行操作。
  • 尝试 HH 而不是 hh 24 小时。
  • 'a' 给出上午/下午。 'A' 将给出 AM/PM
【解决方案3】:

您可以使用此代码 sn-p。我还将它添加到 jsfiddle 并添加了类型安全的 cmets,因此请务必查看小提琴。

如果您使用 jQuery,请在您的 ready 函数中调用它。否则,您可以使用纯 JavaScript 来更新字段的值。

$(document).ready(function(){
    var d = new Date();
    var formatted_time = time_format(d);
    $('#yourTimeField').text(formatted_time);
});

将这两种方法添加到您的脚本中(您也可以将其粘贴到单个文件中,就像在 jsfiddle 代码 sn-p 中一样):

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;
}

就是这样:)希望它有所帮助:)

【讨论】:

  • 我更喜欢这个答案而不是接受的答案,因为在这里你使用真正的小时、分钟和秒来“盲目修剪”字符串。
  • 只是通过minutes = 改变你在全局命名空间中设置分钟,我认为var minutes = 会更好(或者在ES6 中const minutes =)。
【解决方案4】:

您也可以尝试使用http://momentjs.com/。用于解析、验证、操作和格式化日期的 javascript 日期库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-13
    • 2013-03-23
    • 1970-01-01
    • 2011-01-02
    • 1970-01-01
    • 2020-11-30
    相关资源
    最近更新 更多