使用Moment.js格式化日期时前置零丢失致测试失败的解决方案咨询
解决Moment.js日期格式化丢失前置零的问题
问题分析
你当前使用Moment.js的预定义格式LL,在'en-nz'本地化配置下,日期部分会自动截断前导零,导致输出8 August,和测试用例期望的08 August不符。另外注意代码里的incidentdate = 01/08/2022是错误写法——这会被JS解析为数字除法运算,必须改成字符串格式。
修复方案
1. 修正日期变量的写法
把数字形式的日期改成字符串,避免JS自动解析为数值:
var incidentdate = '01/08/2022'; // 用单引号或双引号包裹
2. 自定义格式化字符串,强制保留两位日期
放弃预定义的LL格式,手动指定格式规则:用DD表示两位数字的日期(自动补前导零),搭配MMMM(完整月份名)和YYYY(四位年份)。如果需要带时间,就加上对应时间格式:
import moment from 'moment'; var incidentdate = '01/08/2022'; moment.locale('en-nz'); // 带时间的格式示例 var incidentDateNZFormat = moment(incidentdate, "DD/MM/YYYY").format('h:mm A, DD MMMM YYYY');
这样格式化后就能得到符合测试预期的11:00 AM, 08 August 2022,如果只需要日期部分,去掉h:mm A, 即可。
补充说明
Moment.js的预定义格式(比如LL)是跟随本地化配置的,不同locale的LL规则不同。如果必须用预定义格式,也可以自定义'en-nz'的locale格式,但直接使用自定义格式字符串是更简洁的解决方案。
内容的提问来源于stack exchange,提问作者mehak
相关产品推荐
相关产品推荐

