You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用date-fns包时遇RangeError: Invalid time value问题求助

date-fns调用format方法抛出RangeError的原因分析

问题重现

使用date-fns处理日期字符串"2025-08-01"时,直接调用format方法抛出错误,但原生new Date()可以正常创建日期对象:

const dfs = require('date-fns');
new Date("2025-08-01") // 正常执行
dfs.format("2025-08-01", 'MM-yyyy'); // 抛出RangeError: Invalid time value

原因分析

date-fns的format方法不接受字符串类型的日期参数,它要求第一个参数必须是Date对象、数字类型的时间戳,或者合法的Date实例。

原生Date构造函数会自动尝试解析日期字符串,但date-fns为了保证类型安全和处理逻辑的一致性,不会自动转换字符串参数。当传入字符串时,内部的类型校验会判定这不是有效的时间值,因此抛出RangeError。

解决方案

需要先将日期字符串转换为Date对象后再传入format方法,推荐两种可靠方式:

  1. 使用原生Date构造函数转换:
dfs.format(new Date("2025-08-01"), 'MM-yyyy'); // 输出 "08-2025"
  1. 使用date-fns提供的parseISO方法(专门处理ISO 8601格式的日期字符串,避免时区解析歧义):
dfs.format(dfs.parseISO("2025-08-01"), 'MM-yyyy'); // 输出 "08-2025"

内容的提问来源于stack exchange,提问作者noi.m

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 20:27:02