有没有一种方法可以直接在Javascript中格式化时间

Is there a way to directly format the time in Javascript?

本文关键字:Javascript 时间 格式化 方法 一种 有没有      更新时间:2023-09-26

我想要的是用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

但我想知道是否有更快或更清洁的解决方案来解决这个问题,因为我认为我的解决方案一点都不好。

有可能用更好的方法或解决方案获得同样的行为吗?

提前感谢!

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

这将为您提供您想要的确切格式。虽然我会选择Moment.js或Date.js这样的库。有很多选择。

它是这样的:

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

我认为你的方法没有错。然而,如果你想要不同格式的灵活性,有一个名为moment.js的库可以让你构建和格式化日期。

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

我认为你们做对了。只需稍作修改即可获得您的期望:

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

找到此线程