如何在不显示 AM/PM 的情况下使用 .toLocaleTimeString()?

How do I use .toLocaleTimeString() without displaying AM/PM?

如何在 Javascript 中显示格式为“HH:MM”的数字时钟?

下面的代码以“HH:MM AM/PM”的格式显示数字时钟。

main.js

const d = new Date();
const cFormat = d.toLocaleTimeString([], {
      hour: "2-digit",
      minute: "2-digit",
    });

编辑:虽然下面的代码有效,但我想知道是否有办法通过“.toLocaleTimeString()”实现。

const d = new Date();
const cFormat = d.toLocaleTimeString('en-US', {hour: "2-digit",minute: "2-digit"});
cFormat.replace("AM", "").replace("PM", "");

console.log( 'cFormat -> ', cFormat )

这样

const HH_MM = {hour: '2-digit', minute: '2-digit' }

let cFormat = new Date()
               .toLocaleTimeString('en-US', HH_MM)
               .replace(/AM|PM/,'') 

console.log( 'cFormat -> ', cFormat )

const d = new Date();
const cFormat = d.toLocaleTimeString('en-US', {hour: "2-digit",minute: "2-digit", hour12: true});
cFormat.replace("AM", "").replace("PM", "");

console.log( 'cFormat -> ', cFormat )

replace 函数在原地不起作用,这意味着它不会影响原始字符串。它只是 returns 一个新字符串,所以即使在您给出的答案中,您仍然会得到 AM。你可以这样调整它:

const d = new Date();
const cFormat = d.toLocaleTimeString('en-US', {hour: "2-digit",minute: "2-digit"}).replace(/AM|PM/g, "").trim();

console.log(cFormat)

我知道您想找到一种不同的方法,而不是将 AM/PM 替换为空字符串,但在这一点上,除了使用军事时间之外似乎没有其他方法可以做到.

let time = new Date().toLocaleTimeString().replace("AM", "").replace("PM", "");
console.log(time);
//expected output
//8:03:30