解析并格式化字符串中的日期

时间:2019-01-30 14:43:23

标签: javascript date-fns

我正在尝试date-fns v2。

我想使用toDateformat函数来格式化字符串中的日期:

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

但是出现以下错误:

  

RangeError:无效的时间值

4 个答案:

答案 0 :(得分:2)

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

使用parseISO

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

date-fns v1.30.1(演示:https://stackblitz.com/edit/js-mt3y6p

使用parse

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

答案 1 :(得分:1)

toDate方法无法读取该格式。

尝试将其转换为日期:

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

答案 2 :(得分:1)

似乎您使用的是date-fns的2.0版,目前仍处于alpha(开发)状态。

哪些可用功能以及它们如何工作似乎仍经常变化。例如,在版本v2.0.0-alpha.26 toDate() can handle string parameters中,它在版本v2.0.0-alpha.27 cannot do that any longer中。而是有一个新的parseISO()函数。

这现在应该可以工作:

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

但是,尽管版本2仍处于测试阶段,我建议暂时使用稳定的版本1.x。

答案 3 :(得分:0)

顺便说一句,还有一个要验证的案例:

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())
}