如何用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 相关文章推荐
心扬JS分页函数代码
Sep 10 Javascript
查看源码的工具 学习jQuery源码不错的工具
Dec 26 Javascript
js动画效果制件让图片组成动画代码分享
Jan 14 Javascript
使用AngularJS中的SCE来防止XSS攻击的方法
Jun 18 Javascript
js字符串截取函数slice、substring和substr的比较
May 17 Javascript
Mongoose学习全面理解(推荐)
Jan 21 Javascript
vue-cli+webpack记事本项目创建
Apr 01 Javascript
详解基于webpack搭建react运行环境
Jun 01 Javascript
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
Jun 02 jQuery
了解JavaScript中的选择器
May 24 Javascript
vue props 单项数据流实例分享
Feb 16 Javascript
JS删除对象中某一属性案例详解
Sep 08 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
《OVERLORD》手游英文版即将上线 手机上也能扮演骨王
2020/04/09 日漫
模拟OICQ的实现思路和核心程序(一)
2006/10/09 PHP
php function用法如何递归及return和echo区别
2014/03/07 PHP
PHPExcel实现的读取多工作表操作示例
2020/04/14 PHP
基于jquery实现的鼠标拖拽元素复制并写入效果
2011/08/23 Javascript
手机平板等移动端适配跳转URL的js代码
2014/01/25 Javascript
JavaScript中数据结构与算法(五):经典KMP算法
2015/06/19 Javascript
关于数据与后端进行交流匹配(点亮星星)
2016/08/03 Javascript
bootstrap模态框实现拖拽效果
2016/12/14 Javascript
原生js验证简洁注册登录页面
2016/12/17 Javascript
Express之托管静态文件的方法
2018/06/01 Javascript
vue-router history模式下的微信分享小结
2018/07/05 Javascript
5分钟学会Vue动画效果(小结)
2018/07/21 Javascript
JavaScript将数组转换为链表的方法
2020/02/16 Javascript
Sublime Text3 配置 NodeJs 环境的方法
2020/05/20 NodeJs
[07:57]DOTA2热力大趴狂欢夜 广州站活动回顾
2013/11/27 DOTA
[01:36:17]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第一场 1月31日
2021/03/11 DOTA
Python实现屏幕截图的代码及函数详解
2016/10/01 Python
Python实现的选择排序算法示例
2017/11/29 Python
Python 20行简单实现有道在线翻译的详解
2019/05/15 Python
python 梯度法求解函数极值的实例
2019/07/10 Python
python 标准差计算的实现(std)
2019/07/29 Python
扩展Django admin的list_filter()可使用范围方法
2019/08/21 Python
python实现最大优先队列
2019/08/29 Python
Python要如何实现列表排序的几种方法
2020/02/21 Python
Python pip使用超时问题解决方案
2020/08/03 Python
HTML5拖拽功能实现的拼图游戏
2018/07/31 HTML / CSS
HTML5实现无刷新修改URL的方法
2019/11/14 HTML / CSS
致百米运动员广播稿
2014/01/29 职场文书
捐助感谢信
2015/01/22 职场文书
2016党员党课心得体会
2016/01/07 职场文书
javaScript Array api梳理
2021/03/31 Javascript
SpringAop日志找不到方法的处理
2021/06/21 Java/Android
MySQL Server层四个日志的实现
2022/03/31 MySQL
springboot入门 之profile设置方式
2022/04/04 Java/Android
聊聊mysql都有哪几种分区方式
2022/04/13 MySQL