如何用javascript判断录入的日期是否合法


Posted in Javascript onJanuary 08, 2007
function IsValidYear(psYear) 
{ 
    var sYear = new String(psYear); 
    if(psYear==null) 
    { 
        return false; 
    } 

    if(isNaN(psYear)==true) 
    { 
        return false; 
    } 
    if(sYear == "") 
    { 
        return true; 
    } 
    if(sYear.match(/[^0-9]/g)!=null) 
    { 
        return false; 
    } 
    var nYear = parseInt(sYear, 10); 
    if((nYear < 0) || (9999 < nYear)) 
    { 
        return false; 
    } 
    return true; 
} 

function IsValidMonth(psMonth) 
{ 
    var sMonth = new String(psMonth); 
    if(psMonth==null) 
    { 
        return false; 
    } 
    if(isNaN(psMonth)==true) 
    { 
        return false; 
    } 
    if(sMonth == "") 
    { 
        return true; 
    } 
    if(sMonth.match(/[^0-9]/g)!=null) 
    { 
        return false; 
    } 
    var nMonth = parseInt(sMonth,10); 
    if((nMonth < 0) || (12 < nMonth)) 
    { 
        return false; 
    } 
    return true; 
} 

function IsValidDay(psDay) 
{ 
    var sDay  = new String(psDay); 
    if(psDay==null) 
    { 
        return false; 
    } 
    if(isNaN(psDay)==true) 
    { 
        return false; 
    } 
    if(sDay == "") 
    { 
        return true; 
    } 
    if(sDay.match(/[^0-9]/g)!=null) 
    { 
        return false; 
    } 
    var nDay = parseInt(psDay, 10); 
    if((nDay < 0) || (31 < nDay)) 
    { 
        return false; 
    } 
    return true; 
} 

function IsValidDate(psYear, psMonth, psDay) 
{ 
    if(psYear==null || psMonth==null || psDay==null) 
    { 
        return false; 
    } 
    var sYear  = new String(psYear); 
    var sMonth = new String(psMonth); 
    var sDay   = new String(psDay); 
    if(IsValidYear(sYear)==false) 
    { 
        return false; 
    } 
    if(IsValidMonth(sMonth)==false) 
    { 
        return false; 
    } 
    if(IsValidDay(sDay)==false) 
    { 
        return false; 
    } 
    var nYear  = parseInt(sYear,  10); 
    var nMonth = parseInt(sMonth, 10); 
    var nDay   = parseInt(sDay,   10); 
    if(sYear=="" &&  sMonth=="" && sDay=="") 
    { 
        return true; 
    } 
    if(sYear=="" || sMonth=="" || sDay=="") 
    { 
        return false; 
    } 
    if(nMonth < 1 || 12 < nMonth) 
    { 
        return false; 
    } 
    if(nDay < 1 || 31 < nDay) 
    { 
        return false; 
    } 
    if(nMonth == 2) 
    { 
        if((nYear % 400 == 0) || (nYear % 4 == 0) && (nYear % 100 != 0)) 
        { 
            if((nDay < 1) || (nDay > 29)) 
            { 
                return false; 
            } 
        } 
        else  
        { 
            if((nDay < 1) || (nDay > 28)) 
            { 
                return false; 
            } 
        } 
    } 
    else if((nMonth == 1)  ||  
            (nMonth == 3)  ||  
            (nMonth == 5)  ||  
            (nMonth == 7)  ||  
            (nMonth == 8)  ||  
            (nMonth == 10) ||  
            (nMonth == 12)) 
    { 
        if((nDay < 1) || (31 < nDay)) 
        { 
            return false; 
        } 
    } 
    else  
    { 
        if((nDay < 1) || (30 < nDay)) 
        { 
            return false; 
        } 
    } 
    return true; 
}
Javascript 相关文章推荐
在网站上应该用的30个jQuery插件整理
Nov 03 Javascript
jQuery中ajax和post处理json的不同示例对比
Nov 02 Javascript
JavaScript中逗号运算符介绍及使用示例
Mar 13 Javascript
微信小程序左右滑动的实现代码
Dec 15 Javascript
关于express与koa的使用对比详解
Jan 25 Javascript
基于React+Redux的SSR实现方法
Jul 03 Javascript
JavaScript中AOP的实现与应用
May 06 Javascript
layui复选框的全选与取消实现方法
Sep 02 Javascript
原生js实现3D轮播图
Mar 21 Javascript
js实现视图和数据双向绑定的方法分析
Feb 05 Javascript
Vue的Options用法说明
Aug 14 Javascript
Canvas跟随鼠标炫彩小球的实现
Apr 11 Javascript
[IE&amp;FireFox兼容]JS对select操作
Jan 07 #Javascript
javascript中的对象和数组的应用技巧
Jan 07 #Javascript
JavaScript For Beginners(转载)
Jan 05 #Javascript
JavaScript的目的分析
Jan 05 #Javascript
关于JavaScript的gzip静态压缩方法
Jan 05 #Javascript
关于Javascript 的 prototype问题。
Jan 03 #Javascript
彻底搞懂JS无缝滚动代码
Jan 03 #Javascript
You might like
PHP 和 MySQL 开发的 8 个技巧
2006/10/09 PHP
IStream与TStream之间的相互转换
2008/08/01 PHP
了解Joomla 这款来自国外的php网站管理系统
2010/03/11 PHP
实测在class的function中include的文件中非php的global全局环境
2013/07/15 PHP
PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别
2014/09/29 PHP
支付宝服务窗API接口开发php版本
2016/07/20 PHP
PHP递归实现汉诺塔问题的方法示例
2017/11/25 PHP
Laravel学习笔记之Artisan命令生成自定义模板的方法
2018/11/22 PHP
常见浏览器多长时间会提示“脚本运行时间过长”总结
2014/04/29 Javascript
node.js中的fs.realpath方法使用说明
2014/12/16 Javascript
jQuery学习笔记之jQuery中的$
2015/01/19 Javascript
js鼠标点击图片切换效果代码分享
2015/08/26 Javascript
jQuery中的insertBefore(),insertAfter(),after(),before()区别介绍
2016/09/01 Javascript
Boostrap实现的登录界面实例代码
2016/10/09 Javascript
js实现一个可以兼容PC端和移动端的div拖动效果实例
2016/12/09 Javascript
vue实现百度搜索下拉提示功能实例
2017/06/14 Javascript
详解使用jQuery.i18n.properties实现js国际化
2018/05/04 jQuery
利用angular自动编译andriod APK的绕坑经历分享
2019/03/08 Javascript
用js编写留言板
2020/03/17 Javascript
[01:14]DOTA2亚洲邀请赛 ShowOpen
2015/02/07 DOTA
在Python的Django框架中simple-todo工具的简单使用
2015/05/30 Python
Python获取本机所有网卡ip,掩码和广播地址实例代码
2018/01/22 Python
Python实用工具FuckIt.py介绍
2019/07/02 Python
详解opencv中画圆circle函数和椭圆ellipse函数
2019/12/27 Python
Python @property及getter setter原理详解
2020/03/31 Python
10个很棒的 CSS3 开发工具 推荐
2011/05/16 HTML / CSS
戴尔美国官方折扣店:Dell Outlet
2018/02/13 全球购物
安全的后院和健身蹦床:JumpSport
2019/07/15 全球购物
linux面试题参考答案(8)
2016/04/19 面试题
高中军训广播稿
2014/01/14 职场文书
学习朴航瑛老师爱岗敬业先进事迹思想汇报
2014/09/17 职场文书
索赔员岗位职责
2015/02/15 职场文书
2015年公共机构节能宣传周活动总结
2015/03/26 职场文书
2015年汽车销售工作总结
2015/04/07 职场文书
vue选项卡切换的实现案例
2022/04/11 Vue.js
Golang 对es的操作实例
2022/04/20 Golang