直接给代码好了,本来不想这样做的。
<div id="timer"></div><input type="button" value="↑" onclick="d=new Date(d.getTime()+24*3600*1000)showTime()" /><input type="button" value="↓" onclick="d=new Date(d.getTime()-24*3600*1000)showTime()" />
<script type="text/javascript">
function showTime(){
var dd=document.all?parseInt(d.getYear()):1900+parseInt(d.getYear())
dd+="-"+(dd,(d.getMonth()+1)+"-"+d.getDate())
document.getElementById("timer").innerHTML=dd
}
var d=new Date()
showTime()
</script>
通用FF和IE的,放心用就是了。
用了几个小技巧,利用date.getTime()得到1700年1月1到现在时间的毫秒数,然后加/减1天的毫秒数再传参给new Date()得到新日期,这样可以不算担心润年和月大月小以及润二月问题。
IE和FF在.getYear()方法上不同结果,能过document.all在FF里不支持使年加上1900就能得到通用的年份了。
程序上讲,如果需要准的话,最好还是从服务器读出时间下来操作,语言不同,操作不同,但原理一样的。写个js变量就是了。
日期加减如下:<script language=javascript> //调用VBS里的函数从今天加上七天execScript('s = DateAdd("d", 7, date)','vbscript')
var s = new Date(s)
alert(s.getFullYear() +"-"+ (s.getMonth()+1) +"-"+ s.getDate())
</script>
这是js中运算符的问题。d-c 中-只有减法运算的可能,所以它进行的是减法运算。
但d+c可能是加法运算,也可能是连接字符串,而new Date()返回的结果是字符串,所以它就当作字符串拼接了。