【问题标题】:convert the time using date-fns使用 date-fns 转换时间
【发布时间】:2021-03-05 22:29:13
【问题描述】:

使用datefns 如何将以下格式转换为预期格式

const input = "3:0:0:0"

const output: "3am"

我尝试过的。

import format from 'date-fns/format'

const input = "3:0:0:0"
const output = format(input, "HH:MM:SS:NS")

console.log(output) // getting invalid date.

https://codesandbox.io/s/date-fns-forked-w4c7o

【问题讨论】:

  • 我不明白你为什么需要一个库,但即使是一个库也需要一个适当的日期对象。
  • 但是我只有时间,我没有找到用 am 和 pm 将时间转换为所需的格式,所以我应该为此编写一个自定义函数,因为库不支持时间
  • 我什至没有看到 NS 这里 date-fns.org/v2.16.1/docs/format - 我假设你的意思是 MS,但这不是你想要的输出
  • 所以唯一的方法是拆分,"3:0:0:0".split(":") 并编写自定义逻辑不是

标签: javascript date-fns


【解决方案1】:

如果没有这个库,我会使用 vanilla JS 和

const fmtTime = str => {
  let [hh,mm,ss,ms] = str.split(':')
  return `${hh}${+mm>0?`:${mm}`:''}${hh>12?'pm':'am'}`
};
const input1 = "3:30:0:0";
const input2 = "3:0:0:0";

console.log(fmtTime(input1))
console.log(fmtTime(input2))

【讨论】:

  • 这行得通,但只是一个疑问,如果我有类似 const input1 = "3:30:0:0";常量输入2 =“3:30:0:0”;什么是正确的方式 console.log(${hh}:${mm} ${hh>12?"pm":"am"})
  • 是的,所以在这种情况下 const input = "3:0:0:0" 输出将是凌晨 3:0,实际上应该输出为凌晨 3 点,所以对于这个检查,我尝试添加 + (mm) > 0 && mm,但这将在输出中打印错误。那么如何解决这个问题
猜你喜欢
  • 2021-05-07
  • 1970-01-01
  • 2021-08-01
  • 2021-12-22
  • 1970-01-01
  • 2021-11-16
  • 2021-09-17
  • 2021-08-30
  • 1970-01-01
相关资源
最近更新 更多