怎么样用js做出这个,输入年月日,就知道这是这一年的第几天

JavaScript021

怎么样用js做出这个,输入年月日,就知道这是这一年的第几天,第1张

var days = [ 0, 一月多少天, 平年的二月多少天, 三月多少天, ..., 十二月多少天 ]

var inputs = document.getElementById("输入框ID").value.match(/\d+/g)

var result = 0

for(var i = 0 i < parseInt(inputs[1]) ++i)

    result += (parseInt(inputs[0]) % 4 == 0 && i == 2 ? days[i] + 1 : days[i])

result += parseInt(inputs[2])

然后 result 存放的就是你要的结果

输入框的日期格式应该是 年/月/日

我建议你还是不要去判断吧,很麻烦的,自动给他转换吧,把平年的2月29直接转换为3月1日,把1月32转换为2月1日,例子代码如下:

<input type=text onChange="chk_date(this)">

<script type=text/javascript>

function chk_date(f)

{

   s=f.value.split('-')

   y=parseInt(s[0])

   m=parseInt(s[1])

   d=parseInt(s[2])

   if (isNaN(y) || isNaN(m) || isNaN(d)){alert("请正确填写日期(例如:2002-5-22)!")return false}

   dd=new Date(y,m-1,d)

   y=dd.getYear()

   m=dd.getMonth()+1

   d=dd.getDate()

   f.value=y+'-'+m+'-'+d

   alert(dd)

}

</script>

以上代码调试通过,如果你愿意,可以解决你的问题。

Code:<script language="javascript">

//Format yyy-mm-dd

function dateCompare(date1,date2){

date1 = date1.replace(/\-/gi,"/")

date2 = date2.replace(/\-/gi,"/")

var time1 = new Date(date1).getTime()

var time2 = new Date(date2).getTime()

if(time1 >time2){

return 1

}else if(time1 == time2){

return 2

}else{

return 3

}

}//eg

alert(dateCompare("2011-08-27","2011-08-31"))

alert(dateCompare("2011-08-27","2011-8-08"))

alert(dateCompare("2011-8-27","2011-08-28"))

</script>代码中有三个比较样例,录入的日期保证是年月日即可,月、日不足两位的和一位的表达方式均兼容,你的需求只需要重复两次调用dateCompare即可判断出来,不过你需要控制日期的输入为年月日,因为不同国家和地域(大陆和香港的日期格式就有不同)的日期格式不一致