如何将数字转换为时间?

2023-12-06

我正在尝试使用 date-fns 版本 1.30.1 或纯 JavaScript 创建一个接受数字并返回时间戳 (HH:mm) 的函数。

我想要实现的是在输入时间时帮助用户。当用户离开输入字段时,我使用 Vue.js 更新该字段。因此,如果用户输入 21 然后离开,则该字段理想情况下会更新为 21:00。

一些例子是:

21 = 21:00  
1 = 01:00  
24 = 00:00  
2115 = 21:15  

像 815 这样的数字不必返回 08:15。像 7889 这样的数字应该返回错误。

我尝试过使用正则表达式:

time = time
    .replace(/^([1-9])$/, '0$1')
    .replace(/^([0-9]{2})([0-9]+)$/, '$1:$2')
    .replace(/^24/, '00:00')

我也尝试过在 date-fns 中使用 parse 方法,但似乎不知道如何解决这个问题。


版本 1,将小于 100 的任何内容转换为小时

const num2time = num => {
  if (num < 100) num *=100;
  const [_,hh,mm] = num.toString().match(/(\d{1,2})(\d{2})$/)
  return `${hh.padStart(2,"0")}:${mm}`
}
console.log(num2time(8));
console.log(num2time(2115));
console.log(num2time(15));
console.log(num2time("8"));
console.log(num2time("2115"));

如果数字始终代表有效 (h)hmm,则可以使用版本 2

const num2time = num => num.toString().replace(/(\d{1,2})(\d{2})$/,"$1:$2");

console.log(num2time(815));
console.log(num2time(2115));
console.log(num2time("2115"));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将数字转换为时间? 的相关文章

随机推荐