首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >需要使用javascript验证日期是否为过去日期的帮助

需要使用javascript验证日期是否为过去日期的帮助
EN

Stack Overflow用户
提问于 2013-06-23 17:20:13
回答 2查看 1.1K关注 0票数 1

嗨,我目前被困在如何分割我的正则表达式日期,然后测试是否输入的日期是过去的。如果是的话,我想提醒一下。

我知道我需要如何拼接我的正则表达式,但我不确定如何做到这一点,任何帮助都会非常感谢。下面是我的脚本,到目前为止,它是一个相当长的正则表达式,但它涵盖了包括闰年在内的所有内容,但正如我所说的,我知道需要通过substr或splice来分解它。

代码语言:javascript
运行
复制
//start of datefield
var dateformat=/^(?:(?:31\/(?:0[13578]|1[02])|(?:29|30)\/(?:0[13-9]|1[012])|(?:0[1-9]|1\d|2[0-8])\/(?:0[1-9]|1[0-2]))\/[2-9]\d{3}|29\/02\/(?:[2-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[3579][26])00))$/;

if (!date.match(dateformat))
{
    alert("format incorrect use dd/mm/yyyy make sure you are entering correct days to the month remember 30 days have september, april, june & november, only 28 days in february unless leap year next is 2016");
    return false;
}
//end date field
EN

回答 2

Stack Overflow用户

发布于 2013-06-23 18:18:50

简单

代码语言:javascript
运行
复制
date = "12/11/2009";
if(new Date(date) < new Date()){
     // a
} else {
     // b
}
票数 1
EN

Stack Overflow用户

发布于 2013-06-23 19:45:10

使用正则表达式来计算日期是否有效,或者是在其他时间之前还是之后,这不是最简单的方法。将字符串转换为date对象并对其进行测试要容易得多。

因此,解析字符串以创建一个date对象,然后从那里开始。您不应该将日期字符串的解析留给date对象,因为它主要依赖于实现(ECMA-262指定了ISO8601的一个版本,但并不是所有正在使用的浏览器都支持它)。所以如果你的格式是d/m/y,你可以这样做:

代码语言:javascript
运行
复制
function isDateHistory(s) {
  s = s.split('/');
  return (new Date(s[2], --s[1], s[0])) < (new Date());
}

alert(isDateHistory('15/6/2013')); // true
alert(isDateHistory('15/7/2013')); // false

您还可以使用以下命令验证日期:

代码语言:javascript
运行
复制
function validateDate(dateString) {
  var s = dateString.split('/');
  var d = new Date(s[2], --s[1], s[0]);
  return d && d.getFullYear() == s[2] && d.getDate() == s[0];
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17259304

复制
相关文章

相似问题

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