首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >检查字符串是否为日期值

检查字符串是否为日期值
EN

Stack Overflow用户
提问于 2011-09-16 21:23:23
回答 14查看 413.6K关注 0票数 264

检查一个值是否为有效日期的简单方法是什么,允许的任何已知日期格式。

例如,我有值10-11-200910/11/20092009-11-10T07:00:00+0000,它们都应该被识别为日期值,值20010350,它们不应该被识别为日期值。如果这是可能的,那么最简单的检查方法是什么?因为时间戳也是允许的。

EN

回答 14

Stack Overflow用户

发布于 2014-09-12 03:31:42

new Date(date) === 'Invalid Date'只适用于火狐和Chrome浏览器。IE8 (我的机器上用来测试的那个)提供了NaN。

正如在被接受的答案中所说的那样,Date.parse(date)也适用于数字。因此,为了避免这种情况,您还可以检查它是否不是一个数字(如果您想要确认这一点)。

代码语言:javascript
复制
var parsedDate = Date.parse(date);

// You want to check again for !isNaN(parsedDate) here because Dates can be converted
// to numbers, but a failed Date parse will not.
if (isNaN(date) && !isNaN(parsedDate)) {
    /* do your work */
}
票数 32
EN

Stack Overflow用户

发布于 2014-03-11 02:40:02

像这样怎么样?它将测试它是Date对象还是date字符串:

代码语言:javascript
复制
function isDate(value) {
    var dateFormat;
    if (toString.call(value) === '[object Date]') {
        return true;
    }
    if (typeof value.replace === 'function') {
        value.replace(/^\s+|\s+$/gm, '');
    }
    dateFormat = /(^\d{1,4}[\.|\\/|-]\d{1,2}[\.|\\/|-]\d{1,4})(\s*(?:0?[1-9]:[0-5]|1(?=[012])\d:[0-5])\d\s*[ap]m)?$/;
    return dateFormat.test(value);
}

我应该指出的是,这不会测试ISO格式的字符串,但是对于RegExp来说,稍微多做一点工作应该是很好的。

票数 11
EN

Stack Overflow用户

发布于 2016-07-27 23:14:59

此处的答案都不涉及检查日期是否无效,例如2月31日。此函数通过检查返回的月份是否等于原始月份并确保提供了有效的年份来解决此问题。

代码语言:javascript
复制
//expected input dd/mm/yyyy or dd.mm.yyyy or dd-mm-yyyy
function isValidDate(s) {
  var separators = ['\\.', '\\-', '\\/'];
  var bits = s.split(new RegExp(separators.join('|'), 'g'));
  var d = new Date(bits[2], bits[1] - 1, bits[0]);
  return d.getFullYear() == bits[2] && d.getMonth() + 1 == bits[1];
} 
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7445328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档