JavaScript中哪个函数判断一字符串是否是日期?急用!!!

seanerwu 2002-05-20 01:56:18
JavaScript中哪个函数判断一字符串是否是日期?急用!!!
...全文
35 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiushuiwuhen 2002-05-20
  • 打赏
  • 举报
回复
还有
<script>
function strDate(str){
var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/;
var r = str.match(reg);
if(r==null)return false;
var d= new Date(r[1], r[3]-1,r[4]);
var newStr=d.getFullYear()+r[2]+(d.getMonth()+1)+r[2]+d.getDate()
return newStr==str
}
alert(strDate("2002-1-31"))
alert(strDate("2002-2-31"))
alert(strDate("2002-1-41"))
</script>

还有一些基础的验证,详细内容请看
http://www.blueidea.com/bbs/archivecontent.asp?id=472344
qiushuiwuhen 2002-05-20
  • 打赏
  • 举报
回复
刚才没看
http://www.blueidea.com/bbs/archivecontent.asp?id=472344
中就有:

<script>
function strDateTime(str){
var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
var r = str.match(reg);
if(r==null)return false;
var d= new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]);
var newStr=d.getFullYear()+r[2]+(d.getMonth()+1)+r[2]+d.getDate()+" "+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds()
return newStr==str
}
alert(strDateTime("2002-1-31 12:34:56"))
alert(strDateTime("2002-1-31 12:64:56"))
alert(strDateTime("2002-1-41 12:00:00"))
</script>
qiushuiwuhen 2002-05-20
  • 打赏
  • 举报
回复
刚才没看
http://www.blueidea.com/bbs/archivecontent.asp?id=472344
中就有:

<script>
function strDateTime(str){
var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
var r = str.match(reg);
if(r==null)return false;
var d= new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]);
var newStr=d.getFullYear()+r[2]+(d.getMonth()+1)+r[2]+d.getDate()+" "+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds()
return newStr==str
}
alert(strDateTime("2002-1-31 12:34:56"))
alert(strDateTime("2002-1-31 12:64:56"))
alert(strDateTime("2002-1-41 12:00:00"))
</script>
weidegong 2002-05-20
  • 打赏
  • 举报
回复
我已经试过了,为什么2000/3/33变成2000/04/02,2000/13/1变成2001/1/1
说我贴的那个吧,我觉得很好玩啊:)

用秋水那段代码好了
weblive 2002-05-20
  • 打赏
  • 举报
回复
没有标准自带函数,一定要自己做一个!

抓住几点关键!
1,看看这个字段的长度有没有超过10位数,理由很简单,2000/11/10,算一算!
2,在看看有没有两个“/”号
3,看看有没有“.”号,为了防止小数
4,用split函数把字段分开
5,用isNaN检查这个被split函数分开并返回的数组
6,检查月份和日期是否正确
....
基本上是这样,看着办,自己做总比那人家的代码强,也算是学习嘛!!!
seanerwu 2002-05-20
  • 打赏
  • 举报
回复
我已经试过了,为什么2000/3/33变成2000/04/02,2000/13/1变成2001/1/1
北极海hein 2002-05-20
  • 打赏
  • 举报
回复
给你一个完整的代码
/*****************************************************************
*检查一个值是否在两个指定值的中间
*****************************************************************/
function isBetween (val, lo, hi) {
if ((val < lo) || (val > hi)) { return(false); }
else { return(true); }
}

/*****************************************************************
*检查值是否为整数
*****************************************************************/

function isInt (theStr) {
var flag = true;

if (isEmpty(theStr)) { flag=false; }
else
{ for (var i=0; i<theStr.length; i++) {
if (isDigit(theStr.substring(i,i+1)) == false) {
flag = false; break;
}
}
}
return(flag);
}


/*****************************************************************
*检查值是否为数字
*****************************************************************/

function isDigit(theNum) {
var theMask = '0123456789';

if (isEmpty(theNum)) return(false);
else if (theMask.indexOf(theNum) == -1) return(false);

return(true);
}

/*****************************************************************
*检查值是否为空
*****************************************************************/

function isEmpty (str) {
if ((str==null)||(str.length==0)) return true;
else return(false);
}


/*****************************************************************
*检查日期格式是否合法
*****************************************************************/

function isDate (theStr) {
var the1st = theStr.indexOf('-');
var the2nd = theStr.lastIndexOf('-');

if (the1st == the2nd) { return(false); }
else {
var y = theStr.substring(0,the1st);
var m = theStr.substring(the1st+1,the2nd);
var d = theStr.substring(the2nd+1,theStr.length);
var maxDays = 31;

if (isInt(m)==false || isInt(d)==false || isInt(y)==false) {
return(false); }
else if (y.length < 4) { return(false); }
else if (!isBetween (m, 1, 12)) { return(false); }
else if (m==4 || m==6 || m==9 || m==11) maxDays = 30;
else if (m==2) {
if (y % 4 > 0) maxDays = 28;
else if (y % 100 == 0 && y % 400 > 0) maxDays = 28;
else maxDays = 29;
}
if (isBetween(d, 1, maxDays) == false) { return(false); }
else { return(true); }
}
}
/*****************************************************************
*检查日期格式是否是一个有效的时间格式
*****************************************************************/
function isTime (theStr) {
var colonDex = theStr.indexOf(':');

if ((colonDex<1) || (colonDex>2)) { return(false); }
else {
var hh = theStr.substring(0,colonDex);
var ss = theStr.substring(colonDex+1, theStr.length);

if ((hh.length<1) || (hh.length>2) || (!isInt(hh))) { return(false); }
else if ((ss.length<1) || (ss.length>2) || (!isInt(ss))) { return(false); }
else if ((!isBetween(hh,0,23)) || (!isBetween(ss,0,59))) { return(false); }
else { return(true); }
}
}
qiushuiwuhen 2002-05-20
  • 打赏
  • 举报
回复
vbscript有:
<script>
str = "2001,a1-21 ";
execScript('alert(isDate(str))','vbscript')
str = "2001,11-21 ";
execScript('alert(isDate(str))','vbscript')
</script>

javascript可参考
http://www.blueidea.com/bbs/archivecontent.asp?id=472344
qiushuiwuhen 2002-05-20
  • 打赏
  • 举报
回复
2001,a1-21也算?
<script>
function isDate(str)
{
var re = /,/g;
str = str.replace(re,"/");
re=/-/g;
str = str.replace(re,"/");
var dt=new Date(str);
return !isNaN(dt);
}
str = "2001,a1-21 ";
alert(isDate(str));
</script>

http://www.blueidea.com/bbs/archivecontent.asp?id=472344
seanerwu 2002-05-20
  • 打赏
  • 举报
回复
JavaScript难道没有提供标准函数么?
weidegong 2002-05-20
  • 打赏
  • 举报
回复
<script>
function isDate(str)
{
var re = /,/g;
str = str.replace(re,"/");
re=/-/g;
str = str.replace(re,"/");
var dt=new Date(str);
return !isNaN(dt);
}
str = "2001,11-21 ";
alert(isDate(str));
</script>

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧