Moment: 不必要的弃用警告

创建于 2015-08-03  ·  9评论  ·  资料来源: moment/moment

你好,
我正在为我的应用程序使用 moment js,但遇到了一个问题。 所以我有这样的事情:

if (!moment(inputValue).isValid()) {
  // some stuff going on here...
}

如您所见,我仅尝试使用 isValid() 方法进行验证。 有时,我的输入不是 moment js 的有效日期,因此它会产生“弃用警告:moment 构造回退到 js 日期”。 信息。
我理解你为什么在构造函数中放置了弃用警告,但在我的情况下,我只想使用 moment 进行验证。 不应该有一种方法可以使用 isValid() 功能而不会收到弃用消息。 我需要这个,因为我必须处理一些日志记录。
此致,
斯蒂芬。

最有用的评论

我在搜索与@SVasilev 相同问题的解决方案时发现了这个问题。 我只是想看看一个字符串是否可以被 Moment.js 解析(事先不知道格式)而不产生弃用警告。 如果有一个类函数而不是实例函数,比如只返回一个布尔值的 moment.isValid() ,而不是首先使用构造函数并获得弃用警告,那就太好了。

所有9条评论

您仍然需要提供一个或多个格式字符串。 Moment 可以可靠地测试字符串是否可以解析为特定格式的有效日期,但它无法可靠地测试 _any string_ 是否是日期。

造成这种情况的原因有很多,例如语言环境格式差异。

关键是时刻支持一些默认格式。 因此,如果您想测试是否可以通过开箱即用的时刻解析某些字符串并且该字符串不可解析 - 那么您会在控制台中打印一些内容和带有方法 .isValid() 的时刻对象,这很奇怪,您不能控制它。 有一种方法至少可以抑制控制台中的转储会很方便 - 一切都保持不变。

此致,
乔治

我认为 #2469 中的提案将涵盖这一点。 然后你可以做moment(string, true).isValid() ,它适用于默认情况下支持的所有格式。

谢谢,
我很高兴你看得更远。 我期待你的修复:)
斯特凡

感谢马特的提议,看起来不错。

此致,
乔治

我在搜索与@SVasilev 相同问题的解决方案时发现了这个问题。 我只是想看看一个字符串是否可以被 Moment.js 解析(事先不知道格式)而不产生弃用警告。 如果有一个类函数而不是实例函数,比如只返回一个布尔值的 moment.isValid() ,而不是首先使用构造函数并获得弃用警告,那就太好了。

@odigity - 提供您可能期望的某种或多种格式,并且不会收到弃用警告。 但是,检查任何可能是日期的字符串是不可能的,因为对于像 01/02/03 这样的字符串,我们无法判断字段的顺序。

另外,请不要评论旧的已关闭问题以要求新功能。 只开一个新问题。 谢谢。

为什么这在 2019 年仍然是一个问题? 如果我调用 .isValid(),当提供的字符串无效时,我不应该收到弃用警告。 在对函数进行单元测试时,我故意抛出无效字符串,我希望它在没有这个警告干扰我的日志的情况下抛出。 谢谢。

我现在使用的有限解决方法是if (!Boolean(Date.parse('invalid date'))) throw ..
想在 2 月 30 日等情况下使用if (!moment('invalid date').isValid) ..

注意——这不是一个新的功能请求,而是来自@SVasilev 的原始请求

此问题已关闭,不知道如何重新打开

文档实际上有一个示例https://momentjs.com/docs/会产生此警告

moment("not a real date").isValid();

我认为至少需要更新。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

ghost picture ghost  ·  3评论

vbullinger picture vbullinger  ·  3评论

RobinvanderVliet picture RobinvanderVliet  ·  3评论

danieljsinclair picture danieljsinclair  ·  3评论

M-Zuber picture M-Zuber  ·  3评论