js日期校验

校验两个日期期限必须小于1年,考虑到闰年的情况,闰年2月29号,到下一年必须为2月28号,请问各位大神这个应该怎么写,我是新人,不太会,可以给出代码让我看看么?在线等,急... 校验两个日期期限必须小于1年,考虑到闰年的情况,闰年2月29号,到下一年必须为2月28号,请问各位大神这个应该怎么写,我是新人,不太会,可以给出代码让我看看么?
在线等,急求!!!
展开
 我来答
时夏DZ13AS
2014-09-19 · 超过49用户采纳过TA的回答
知道答主
回答量:94
采纳率:0%
帮助的人:112万
展开全部
function check(date){ return (new Date(date).getDate()==date.substring(date.length-2));}//参数date可以格式化为xx-xx-xx或xxxx-xx-xx或用/分割附:
通常来说,javascript验证日期的有效性可以通过正则判断
但正则表达式无法精准验证日期的有效性,你无法通过正则表达式判断出1900-02-29是非法日期而2000-02-29是合法日期,而且正则表达式匹配起来比较繁琐。
要想精确验证,最容易想到的方法就是通过月份判断日期是否合法(1~28/29/30/31),你可以用一个数组表示每月的天数,如daysInMonth=[31,28,31,30,31,30,31,31,30,31,30,31],但你会发现daysInMonth[1]这个值可能是28或29,你又要写一个判断闰年的函数来解决这个问题......
这至少要花费20行以上的代码来完成这件事,而通过javascript中的Date对象,我们只需要1行代码即可完成上述功能。
function check(date){
return (new Date(date).getDate()==date.substring(date.length-2));
}
date为一个待检查的类日期字符串(如2013-01-01、2013/01/01、2013/01/32、2013/02/29),不论这个字符串是否正确
通过新建的Date对象(new Date(date)),可以识别出该日期是否正确,如果不正确则返回Invalid Date
但这样会有一个bug,当日期的值在1-31之间,new Date总返回一个新的对象,不论该月份是否存在这个日期(如2013-02-30将返回日期对象Sat Mar 02 2013 08:00:00 GMT+0800 (中国标准时间)),返回结果是下个月的日期而不报错
所以要用getDate()方法获取日期(new Date('2013-02-30')对象的getDate()方法将返回2)
date.substring(date.length-2)会获取到字符串最后两位也就是日期的部分,这与Date对象的日期部分做比较,如果相等则说明日期有效,否则为无效日期
如果日期无效则'=='左边值为NaN,右边无论是什么(''、null、undefined、NaN等)结果都为false

打字不易,如满意,望采纳。
追问
我想将两个日期相减,然后比较得到的结果小于1年,这个应该怎么写?而且如果大于1年就报错,只要范围在1年以内的任何日期都可以
hyjiacan
2014-09-20 · TA获得超过3912个赞
知道小有建树答主
回答量:894
采纳率:100%
帮助的人:1090万
展开全部

1年 ? 1年的判断依据呢?

我是这样想的:

1年的话,那么到明年的今天就可以了嘛。如果是在明年的今天前,那么就是在1年内,否则就超过1年了。看代码:

var date1 = new Date('2012-02-17'); // 开始日期
var date2 = new Date('2013-01-25'); // 结束日期
var date3 = new Date(date1);        // 这个日期会设置成明年的今天
date3 .setFullYear(date1.getFullYear()+1); // 1 年内的最后一天
var diff = date3 - date2;    // 算结束与明年的今天的日期差
if(diff==0) {
    // 结束日期是明年的今天
} else if(diff < 0) {
    // 结束日期在明年的今天后
} else {
    // 结束日期在明年的今天前,也就是你说的1年内了
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式