代码:
let modifiedValue = attribute_value;
let isISOFormat = moment(new Date(attribute_value), moment.ISO_8601, true).isValid();
if (isISOFormat) {
modifiedValue = formatDateShortCustom(moment(attribute_value).toDate());
}
return modifiedValue;
};
在上面的代码中,属性值可以是:
2021-09-29T18:30:00.000Z
080921
modifiedValue = formatDateShortCustom(moment(attribute_value).toDate());
然而,这个数字字符串也导致 isISOFormat
为 true
,从而导致执行formatDateShortCustom
方法,这不是我想要的。我做错了什么吗?
^\d+$
。 - Terrynew Date(080921)
的输出结果为Thu Jan 01 1970 01:01:20 GMT+0100(中欧标准时间)
(至少在我的中欧控制台上是这样的 :))。 你将其传递给了 Moment。当然,Moment说这是一个有效的日期,这里没有什么奇怪的东西。 - Jeremy Thillemoment(new Date(attribute_value), moment.ISO_8601, true)
没有任何意义。new Date(attribute_value)
返回一个日期对象,因此提供解析格式是多余的,没有什么需要解析(它已经在new Date(...)
中完成)。严格参数也是一样,它不起作用。如果您想测试 attribute_value 是否符合 ISO 8601 格式,则应明确执行此操作,而不是尝试根据内置解析器对其执行的操作来推断是否符合要求。 - RobG