javascript 如何转换时间 hh mm 格式?

how to covert time hhmm format in javascript?

这里我得到一个时间值 1700。我想将其转换成这样的格式 5pm。我试图用 moment 包来做到这一点。它有很多选项,我无法找到相关格式来实现我正在寻找的输出。

结果必须是这样的:

1700 -> 下午 5 点

0900 -> 上午 9 点

我现在的impl是

moment("1500", "hh").format('LT') => 3:00 PM

这里输出不同,必须像下午 3 点。

有什么办法可以做到这一点。帮我提出建议和反馈

moment().format("hA"); 可以满足您的需求。参见 https://momentjs.com/docs/#/displaying/format/

您不需要使用momentjs;如果您确定您的输入时间将始终是一个 4 位数的字符串,您可以创建自己的简单格式化函数(以下代码只是基本概念,您可能需要对其进行一些改进以更好地满足您的需求):

function formatTime(str) {
  const [hh, mm] = str.match(/[0-9]{2}/g);
  const hours = parseInt(hh);
  const ampm = hours < 12 ? 'am' : 'pm';
  
  return `${hours === 12 ? hours : hours % 12}${parseInt(mm) > 0 ? `:${mm}` : ''}${ampm}`
}

// test
['1500', '0900', '1345', '0000', '1217', '1805'].forEach(item => console.log(formatTime(item)));