moment-hijri判定合法回历日期1400-10-30无效问题排查
回历日期30-Shawwal-1400验证无效的原因分析
以下是导致moment('1400-10-30', 'iYYYY-iMM-iDD').isValid()返回false的核心原因:
- 历法规则不匹配:moment-hijri插件默认采用通用伊斯兰回历算法,而Ummul-Qura(乌姆古拉)是沙特官方推行的修正版回历,两者在月份天数判定逻辑上存在差异。通用回历中Shawwal月通常仅29天,但乌姆古拉历法会结合实际观测或官方调整,允许部分年份的Shawwal月设为30天,1400年就属于这种特殊情况。
- 插件数据源未更新:moment-hijri的内置历法数据可能未同步乌姆古拉历法的最新调整,没有收录1400年Shawwal月有30天的规则,因此插件判定该日期超出当月天数上限,返回无效。
- 格式解析的隐性校验问题:虽然指定了
iYYYY-iMM-iDD的解析格式,但插件内部对回历月份与数字的映射校验可能存在疏漏,不过这种情况概率较低,核心矛盾仍在于历法规则的不统一。
若需准确校验乌姆古拉历法日期,建议使用专门适配该历法的日期处理工具,而非通用回历插件。
内容的提问来源于stack exchange,提问作者Zuhair
相关产品推荐
相关产品推荐

