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

Parse and format date in string

我正在试用 date-fns v2.

我想使用 toDate and format 函数格式化字符串中的日期:

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

但是出现如下错误:

RangeError: Invalid time value

toDate 方法无法读取该格式。

尝试像这样转换为日期:

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

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');

看来您使用的是date-fns 2.0版本,目前还处于alpha(开发)状态。

可用的功能以及它们的工作方式似乎仍然经常变化。例如,在版本 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() 函数改为

现在应该可以工作了:

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

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

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

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