今天遇到一个题目,用户通过页面的下拉列表来设置两个日期,我们根据这两个日期计算出相差的天数
(没有考虑大月和小月,侧重点是说明下拉列表框和onchange事件处理器的使用)
为了方便用户,开始的默认日期为系统当前日期。
代码:
<script type="text/javascript">
function theday(start,end){
for(var i=start;i<=end;i++){
document.write("<option value="+i+">"+i);
}
}
function themonth(){
var date=new Date();
for(var i=0;i<12;i++){
date.setMonth(i);
var month=date.toString();
month=month.substr(4,3);
document.write("<option value="+month+">"+month);
}
}
function setdate(){
var form=document.form1;
var date=new Date();
form.day1.options[date.getDate()-1].selected=true;
form.month1.options[date.getMonth()].selected=true;
form.year1.options[date.getFullYear()-1970].selected=true;
form.day2.options[date.getDate()-1].selected=true;
form.month2.options[date.getMonth()].selected=true;
form.year2.options[date.getFullYear()-1970].selected=true;
}
function xiangge(){
var form=document.form1;
var d1=form.day1.options[form.day1.selectedIndex].value;
alert(typeof(d1));
var m1=form.month1.options[form.month1.selectedIndex].value;
var y1=form.year1.options[form.year1.selectedIndex].value;
var date1=new Date(d1+" "+m1+" "+y1); //开始的时候我没有加" ",出现了错误,
alert(date1); //没加“”,输出的date1是Invalid Date即无效的日期
var d2=form.day2.options[form.day2.selectedIndex].value;
var m2=form.month2.options[form.month2.selectedIndex].value;
var y2=form.year2.options[form.year2.selectedIndex].value;
var date2=new Date(d2+" "+m2+" "+y2);
var cha=Math.floor((((Math.abs(date1.valueOf()-date2.valueOf())/1000)/60)/60)/24);
form.text.value=cha;
return true;
}
</script>
</head>
<body οnlοad="return setdate()">
<form name="form1">
<select name="day1" οnchange="return xiangge()">
<script type="text/javascript">
theday(1,31);
</script>
</select>
<select name="month1" οnchange="return xiangge()">
<script type="text/javascript">
themonth();
</script>
</select>
<select name="year1" οnchange="return xiangge()">
<script type="text/javascript">
theday(1970,2020);
</script>
</select>
<br />
<br />
<select name="day2" οnchange="return xiangge()">
<script type="text/javascript">
theday(1,31);
</script>
</select>
<select name="month2" οnchange="return xiangge()">
<script type="text/javascript">
themonth();
</script>
</select>
<select name="year2" οnchange="return xiangge()">
<script type="text/javascript">
theday(1970,2020);
</script>
</select>
相差<input name="text" value="0" />天
</form>
</body>
上网搜了一下,格式:
Date 对象用于处理日期和时间。
创建 Date 对象的语法:
var myDate=new Date()
Date 对象会自动把当前日期和时间保存为其初始值。
参数形式有以下5种:
new Date("month dd,yyyy hh:mm:ss");
new Date("month dd,yyyy");
new Date(yyyy,mth,dd,hh,mm,ss);
new Date(yyyy,mth,dd);
new Date(ms);
注意最后一种形式,参数表示的是需要创建的时间和GMT时间1970年1月1日之间相差的毫秒数。各种函数的含义如下:
month:用英文表示月份名称,从January到December
mth:用整数表示月份,从(1月)到11(12月)
dd:表示一个月中的第几天,从1到31
yyyy:四位数表示的年份
hh:小时数,从0(午夜)到23(晚11点)
mm:分钟数,从0到59的整数
ss:秒数,从0到59的整数
ms:毫秒数,为大于等于0的整数
如:
new Date("January 12,2006 22:19:35");
new Date("January 12,2006");
new Date(2006,0,12,22,19,35);
new Date(2006,0,12);
new Date(1137075575000);
但是上例中有变量的时候,只有new Date(d1+" "+m1+" "+y1); 可以使用