javascript - 如何将数字转换为时间?

标签 javascript string date time date-fns

我正在尝试使用 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"));

关于javascript - 如何将数字转换为时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58554311/

相关文章:

python - 如何判断一个字符串是否在 Python 中重复?

php - Mysql今天日期

javascript - 如何获取动态创建的输入字段的值(Json)

json - 在 Terraform 变量中使用 JSON 格式的字符串

r - 使用空格和大写字母分割字符串

sql - 比较两个日期的提取年份

c# - 日/月/年不显示没有小时

javascript - 尝试向后扩展 Node 集群时 phantomjs-node 崩溃

javascript - 如何获取在其他 svg 上绘制的 svg 的 id 并将其删除

javascript - 用于创建和填充 k6 指标的函数