Parse and format date in string

强颜欢笑 提交于 2019-12-12 10:24:22

问题


I'm trying out date-fns v2.

I want to format a date in a string by using the toDate and format functions:

import { format, toDate } from 'date-fns'
format(toDate('2019-02-11T14:00:00'), 'MM/dd/yyyy')

But get the following error:

RangeError: Invalid time value


回答1:


It seems that you are using Version 2.0 of date-fns, which is still in alpha (development) status currently.

What functions are available and how they work still seems to change frequently. For example, while in version v2.0.0-alpha.26 toDate() can handle string parameters, it cannot do that any longer in version v2.0.0-alpha.27. There is a new parseISO() function instead.

This should work now:

format(parseISO('2019-02-11T14:00:00'), 'MM/dd/yyyy')

However, while version 2 is still in beta, I would suggest using the stable version 1.x for now.




回答2:


date-fns 2.0.0-alpha.27 (demo: https://stackblitz.com/edit/js-tztuz6)

Use parseISO:

import { format, parseISO } from 'date-fns'
const formattedDate = format(parseISO('2019-02-11T14:00:00'), 'MM/dd/yyyy');

date-fns v1.30.1 (demo: https://stackblitz.com/edit/js-mt3y6p)

Use parse:

import { format, parse } from 'date-fns'
const formattedDate = format(parse('2019-02-11T14:00:00'), 'MM/DD/YYYY');



回答3:


The method toDate is not able to read that format.

Try to convert to Date lke this:

var date = new Date('2019-02-11T14:00:00')



回答4:


Btw, one more case to validate:

import { isValid, parseISO, parse } from 'date-fns'

// Date valid
if (isValid(parseISO('2019-11-27 09:45:00'))) {
 let dt = parse('2019-11-27 09:45:00', 'yyyy-MM-dd HH:mm:ss', new Date())
}


来源:https://stackoverflow.com/questions/54443161/parse-and-format-date-in-string

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!