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

使用Luxon将yyyyMMdd转为dd/MM/yyyy时Jest Spectator测试失败求助

问题分析与解决

你的代码核心问题是日期解析格式字符串写错了:

你要解析的输入是yyyyMMdd格式(比如20201130代表2020年11月30日),但调用DateTime.fromFormat时传入的格式是'ddMMyyyy',这会让Luxon把输入字符串按「日-月-年」规则去解析,自然会得到无效日期,导致测试失败。

修正后的代码

把解析格式改成'yyyyMMdd'即可,同时如果需要确保输出是固定的dd/MM/yyyy格式,建议不要依赖toLocaleString(DateTime.DATE_SHORT)(它会受环境区域设置影响,可能输出不同分隔符或格式),而是用toFormat('dd/MM/yyyy')强制指定输出格式:

toDateFormatDDMMYYYY = DateTime.fromFormat(
  dateFormatToTransform,
  'yyyyMMdd' // 修正为输入对应的格式
).toFormat('dd/MM/yyyy'); // 强制输出目标格式

为什么控制台看起来正常?

大概率是你控制台测试时用的输入刚好符合ddMMyyyy格式(比如输入01072023),所以解析成功,但测试用的20201130按ddMMyyyy解析的话,会把20当作日期、20当作月份,这显然是无效的,因此返回「invalid date」。

测试验证

修正代码后,你的Jest Spectator测试应该能正常通过——输入20201130会被正确解析为2020年11月30日,然后格式化为30/11/2020,与测试预期一致。

内容的提问来源于stack exchange,提问作者Olivier

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 15:40:04