jS 日期 问题

JavaScript027

jS 日期 问题,第1张

为什么有document.getElementById不用,一定要去用document.all这种不符合标准的用法?真想不通。。。

直接给代码好了,本来不想这样做的。

<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()返回的结果是字符串,所以它就当作字符串拼接了。