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

pro*_*ogx 2 javascript date momentjs date-fns

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

这是我的约会:

"10-13-20" // month, day, and year
Run Code Online (Sandbox Code Playgroud)

现在使用 momentJS,它可以像这样正常工作:

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

所以我试图使用date-fns做同样的事情,但没有运气。任何人都可以指出我正确的方向吗?提前致谢!

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

adR*_*adR 13

const date = "2021-12-20"
console.log(format(parseISO(date), "dd-MM-yyyy"));
// output: 20-12-2021
Run Code Online (Sandbox Code Playgroud)


hoa*_*gdv 8

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

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

解决方案是用momentlib做同样的事情:

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

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

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

    结果将类似于(与我的时区中的时刻结果相同):

     2020-10-13T00:00:00.000+09:00
    
    Run Code Online (Sandbox Code Playgroud)