【问题标题】:Check if date is in given format with Javascript使用Javascript检查日期是否为给定格式
【发布时间】:2012-03-16 13:38:06
【问题描述】:

如何检查日期是否为给定格式。它必须是这样的功能

function isInGivenFormat(date,format)
{
//some checking
}

例如,isInGivenFormat("12:45:02","hh:mm:ss") 必须返回 true,isInGivenFormat("12:45:02 PM","hh:mm:ss") 必须返回 false。
如何使用 Javascript/Jquery 实现此功能?

【问题讨论】:

  • 天哪,它的 Chuck Norris 在 Stackoverflow 上提问:D Chuck Norris 不在 Stackoverflow 上提问,Stackoverflow 正在问他问题:D
  • :DDDDD 只有 Jon Skeet 可以回答 Chuck Norris 的问题...

标签: javascript jquery datetime date datetime-format


【解决方案1】:

我建议您查看 Date.js 库。它处理这种情况(以及更多)。

特别是parseExact() 方法解决了这个问题。

Date.parseExact ( String dateString, String formatStringOrArray ) : Date

使用指定的格式(字符串)或格式(数组)将指定的字符串值转换为其等效的 JavaScript 日期。字符串值的格式必须与提供的格式之一完全匹配。

示例

Date.parseExact("12:45:02 PM","hh:mm:ss"); // returns null
Date.parseExact("10/15/2004", "M/d/yyyy");  // The Date of 15-Oct-2

【讨论】:

    【解决方案2】:
    var dateCheck = /^\d{2}:\d{2}:\d{2}$/.test(date)
    if(!dateCheck){
    //not a match
    }
    

    【讨论】:

    • +1 但说真的,当他们可以让用户加载库时,为什么有人想要使用简单的表达式呢? :-/ 我认为作为/^\d{2}:\d{2}:\d{2}$/.test(dateString) 会更好,这样输入的库调用就更少了。
    • 是的,这对于“hh:mm:ss”格式来说是一个很好的解决方案,但问题是关于所有格式版本的通用功能。在这种情况下,date.js 是更聪明的解决方案。
    • 在 RobG。那里的测试也更合适。我只用了 5 年的时间就注意到了。已编辑:)
    【解决方案3】:

    您可以使用date.js库的Date.parseExact()函数

    【讨论】:

      【解决方案4】:

      您需要使用正则表达式。此链接可能会有所帮助:

      regex in javascript

      【讨论】:

      • 当格式可以是一切时,我如何使用正则表达式?
      • 为您要使用的每种格式创建一个正则表达式,或创建一个函数来分析您的格式以动态创建正则表达式。
      • 或者直接这样做:var formats = {};格式['hh:mm:ss'] = //正则表达式
      • 与为每种格式创建正则表达式有何不同?
      猜你喜欢
      • 2023-03-27
      • 1970-01-01
      • 2011-10-06
      • 1970-01-01
      • 2013-10-31
      • 1970-01-01
      • 1970-01-01
      • 2011-03-18
      相关资源
      最近更新 更多