有没有办法在Javascript中直接格式化时间?

时间:2015-10-07 01:02:51

标签: javascript

我想要的是用Javascript获取当前时间的输出。输出应类似于:

15:28:30 PM

我使用以下代码得到了这个:

var date = new Date();
document.write("Current time: " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds());

if (date.getHours() <= 12)
   document.write(" AM");
else
   document.write(" PM");

所以我得到的输出是:

Current time: 3:0:16 AM

但我想知道是否有更快或更清洁的解决方案来解决这个问题,因为我觉得我的解决方案根本不好。

使用更好的方法或解决方案是否可以获得相同的行为?

提前致谢!

5 个答案:

答案 0 :(得分:3)

var date = new Date();
var time = date.toLocaleString('en').split(', ').pop();

这将为您提供所需的确切格式。虽然我会使用像Moment.js或Date.js这样的库。很多选择与那些。

答案 1 :(得分:1)

就是这样:

var dt = new Date;
console.log(dt.toLocaleTimeString());

答案 2 :(得分:0)

我认为你的做法没有错。但是,如果您想要不同格式的灵活性,可以使用一个名为moment.js的库,它允许您构建和格式化日期。

moment().format('hh:mm:ss A'); // 12:00:00 AM

答案 3 :(得分:0)

我认为你做对了。只需要修改一点就能得到你的期望:

var date = new Date();
int hour = date.getHours();
string abbr;

if (date.getHours() <= 12)
   abbr = " AM";
else {
   hour = hour + 12;
   abbr = " PM";
}
document.write("Current time: " + hour + ":" + date.getMinutes() + ":" + date.getSeconds() + abbr);

答案 4 :(得分:0)

    var currentTime = new Date()
    var hours = currentTime.getHours()
    var minutes = currentTime.getMinutes()
    var seconds = currentTime.getSeconds()

    if (minutes < 10) {
        minutes = "0" + minutes
    }
    if (seconds < 10) {
        seconds = "0" + seconds
    }
    str += hours + ":" + minutes + ":" + seconds + " ";
    if(hours > 11){
        str += "PM"
    } else {
        str += "AM"
    }
    return str;
}

Found this thread