Как отформатировать дату с помощью 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

person Devmix    schedule 14.10.2020    source источник
comment
new Date("10-13-20") возвращает неверную дату как минимум в Firefox и Safari. См. Почему Date.parse дает неверные результаты?< /а>   -  person RobG    schedule 15.10.2020


Ответы (1)


Как видите, с moment lib нам нужно 2 шага, чтобы получить результат: разобрать строку в объект Date, затем отформатировать объект даты в строку.

Ваш код - format(new Date("10-13-20"), 'MM-DD-YY') - это шаг format, попробуйте преобразовать объект даты в строку с шаблоном формата MM-DD-YY. Но ваш объект даты неверен.

Решение делает то же самое с moment lib:

  1. Разобрать строку даты для объекта даты. Используйте анализ

    const dateString = '10-13-20';
    const date = parse(dateString, 'MM-dd-yy', new Date()) // not MM-DD-YY
    
  2. Форматировать объект даты в результирующую строку. Используйте формат

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

    Результат будет таким (то же самое с результатом момента в моем часовом поясе):

     2020-10-13T00:00:00.000+09:00
    
person hoangdv    schedule 14.10.2020