如何使用 date-fns 格式化日期?

How to format date with date-fns?

我一直在尝试使用 date-fns 格式化日期,但我一直失败。基本上我让它在 momentJS 上工作得很好,但在 date-fns 上不行:

这是我的约会对象:

"10-13-20" // month, day, and year

现在使用 momentJS 就可以正常工作了:

let result = moment("10-13-20", 'MM-DD-YY').format()
// result = "2020-10-13T00:00:00-06:00"

所以我尝试使用 date-fns 做同样的事情,但没有成功。谁能指出我正确的方向?提前致谢!

let result = format(new Date("10-13-20"), 'MM-DD-YY') // Not working

如您所见,使用 moment 库,我们需要 2 个步骤才能得到结果:将字符串解析为 Date 对象,然后将日期对象格式化为字符串。

您的代码 - format(new Date("10-13-20"), 'MM-DD-YY')format 步骤,尝试将日期对象转换为格式模板为 MM-DD-YY 的字符串。但是你的日期对象不正确。

解决方案与 moment lib:

相同
  1. 将日期字符串解析为日期对象。使用 parse

    const dateString = '10-13-20';
    const date = parse(dateString, 'MM-dd-yy', new Date()) // not MM-DD-YY
    
  2. 将日期对象格式化为结果字符串。使用 format

    const result = format(date, "yyyy-MM-dd'T'HH:mm:ss.SSSxxx")
    console.log(result)
    

    结果将是这样的(与我所在时区的瞬间结果相同):

     2020-10-13T00:00:00.000+09:00
    
const date = "2021-12-20"
console.log(format(parseISO(date), "dd-MM-yyyy"));
// output: 20-12-2021