【问题标题】:How to validate date in chrome browser as well as in firefox browser如何在 chrome 浏览器和 firefox 浏览器中验证日期
【发布时间】:2015-06-22 08:28:40
【问题描述】:

在 chrome 中,我试图检查日期是否有效。

有一个变量:

var d = new Date('9/'); // Not a correct format

在 Chrome 中

console.log(new Date('9/')); // Output: Sat Sep 01 2001 00:00:00 GMT+0530 (India Standard Time) Which is wrong as I am providing wrong date.

在火狐中

console.log(new Date('9/')); // Output: Invalid Date

同样使用date.toLocaleString()在firefox中有输出06 May 2007 00:00:00

在 chrome 中是 1/9/2001;

所以我的问题是如何在 chrome 中验证日期并确保代码免受这些差异的影响。如果需要更多详细信息,请在评论中写下。

【问题讨论】:

  • 使用momentjs.com
  • @MattBall this 或类似的东西应该是答案。站在前人的肩膀上……也许做得更好。
  • @MattBall 我做不到,我需要 javascript 解决方案。页面已经有很多框架。
  • JavaScript 库仍然是 JavaScript。 “太多的库”是引入另一个库的一个不好的理由(出于正确的原因)。如果您想要跨浏览器表现相同的东西,当不同的浏览器不这样做时,使用库。
  • 一些正则表达式解决方案? @MattBall

标签: javascript google-chrome date cross-browser


【解决方案1】:

正如您所发现的,Javascript Date API 在浏览器之间可能会产生一些混合的结果。

我可以建议的最佳选择是使用为此可用的第三方库之一。我可以推荐两个——Moment.jsDate.js

这两个库都有更好的验证和解析,并且比内置的 Date 类更一致的跨浏览器。

【讨论】:

  • 原生javascript(没有库)不可能吗?我知道这些解决方案,但我只需要 javascript 解决方案。总之谢谢! @Spudley
  • 嘿@Ashwin,我大量使用了moment.js,我可以向你保证它是纯Javascript。该项目托管在Github,因此您可以自己检查the only required file 是否只是Javascript。
  • 那些库 javascript,所以这是一个纯javascript的解决方案。问题是浏览器之间的 Date 类不一致,因此您需要其他东西来进行解析和验证。您的选择是编写自己的验证代码或使用现有库。但即使你自己写,它仍然是一个库;只是你写的而不是别人写的。如果你想写你自己的,但我提到的那些已经在那里,它们是免费的,它们已经过适当的测试,它们是众所周知的并且运行良好。您的选择。
  • @Spudley 你说得对,我不能再相信 Date API 了。使用库比编写自己的要好。虽然我几乎写了一个库来验证Date :) 。 +1 接受
【解决方案2】:

正确的答案是使用 @Spudley 建议的 Javascript 库,如 moment.js

但是,如果您不想包含那个很棒的库(或其他类似的库),您可以尝试通过这样的正则表达式运行您的日期:

var date = "9/",
    pattern = /(?:(?:\d{2}[-\/]){2}\d{4})|(?:\d{4}(?:[-\/]\d{2}){2})/,
    isValid = false;

isValid = pattern.test( date );

这将匹配 yyyy/mm/dddd/mm/yyyymm/dd/yyyyyyyy/dd/mm(以及许多变体 [和问题])。

但是,这是非常幼稚的,与绝大多数日期格式不匹配,允许混合分隔符以及一系列其他问题。

再次,我强烈建议您实现像 moment.js 这样的库,但这个正则表达式可能是一个开始。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-20
    • 2012-07-21
    • 1970-01-01
    • 2014-11-08
    • 2019-02-03
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    相关资源
    最近更新 更多