如何用date-fns将dd-MM-yyyy日期转为yyyyMMdd?解决parseISO报错
问题原因及解决方案
错误点说明
parseISO函数仅用于解析ISO 8601标准格式的日期字符串(例如yyyy-MM-dd、yyyyMMdd、yyyy-MM-ddTHH:mm:ss),它不接受自定义格式参数——你传入的第二个参数'dd-MM-yyyy'完全无效。- 你的输入日期格式是
dd-MM-yyyy,不符合ISO 8601规范,因此parseISO无法识别该字符串,返回无效日期,进而导致后续format函数报错。
正确实现方式
基于 date-fns 库
使用支持自定义格式解析的 parse 函数替代 parseISO:
import { parse, format } from 'date-fns'; // 示例输入:date = '25-05-2024' const result = format( parse(date, 'dd-MM-yyyy', new Date()), 'yyyyMMdd' ); // 输出:'20240525'
基于 dayjs 库
需要先引入自定义解析插件,再完成格式转换:
import dayjs from 'dayjs'; import customParseFormat from 'dayjs/plugin/customParseFormat'; dayjs.extend(customParseFormat); // 示例输入:date = '25-05-2024' const result = dayjs(date, 'dd-MM-yyyy').format('yyyyMMdd'); // 输出:'20240525'
内容的提问来源于stack exchange,提问作者Nathan Jackson
相关产品推荐
相关产品推荐

