十七、日期和时间
1. 时钟示例(Clock Example)
Q:我如何使用JavaScript编写一个时钟程序?
A:一个简单的时钟程序就是每秒获取一个新的Date()(或者,更好些,一秒几次),然后将时间信息从Date()对象中显示出来。下面的代码就是在浏览器的状态栏中显示一个时钟:
function sbClock() { var DateString=(new Date()).toString(); self.status=DateString.substring(0,3+DateString.lastIndexOf(':')); setTimeout("sbClock()",200); } sbClock();
<!-- function sbClock() { var DateString=(new Date()).toString(); self.status=DateString.substring(0,3+DateString.lastIndexOf(':')); setTimeout("sbClock()",200); } // -->
2. 日历示例(Calendar Example)
Q:如何通过给定日期确定是星期几?
A:要从给定的日期确定星期几,你可以将这个日期设置为一个Date()对象,然后通过Date.getDay()获取星期几:
d=new Date(); d.setDate(1); d.setYear(yyyy); d.setMonth(mm); d.setDate(dd); ww=d.getDay(); if (ww==0) wDay="Sunday"; if (ww==1) wDay="Monday"; if (ww==2) wDay="Tuesday"; if (ww==3) wDay="Wednesday"; if (ww==4) wDay="Thursday"; if (ww==5) wDay="Friday"; if (ww==6) wDay="Saturday";
<!-- function inDate() { s=prompt("Input date (example: 1 Jan 1998)",""); if (s!="" && s!=null) determineDay(s); } function inBirthDate() { s=prompt("Input your birth date (example: 1 Jan 1970)",""); if (s!="" && s!=null) countDays(s); } function determineDay(parStr) { while (parStr.charAt(parStr.length-1)==" ") parStr=parStr.substring(0,parStr.length-1); while (parStr.charAt(0)==" ") parStr=parStr.substring(1,parStr.length); dd=parseInt(parStr,10); yyyy=parseInt(parStr.substring(parStr.lastIndexOf(" ")+1,parStr.length)) mm=-1; if (parStr.toUpperCase().indexOf("JAN")!=-1) mm=0; if (parStr.toUpperCase().indexOf("FEB")!=-1) mm=1; if (parStr.toUpperCase().indexOf("MAR")!=-1) mm=2; if (parStr.toUpperCase().indexOf("APR")!=-1) mm=3; if (parStr.toUpperCase().indexOf("MAY")!=-1) mm=4; if (parStr.toUpperCase().indexOf("JUN")!=-1) mm=5; if (parStr.toUpperCase().indexOf("JUL")!=-1) mm=6; if (parStr.toUpperCase().indexOf("AUG")!=-1) mm=7; if (parStr.toUpperCase().indexOf("SEP")!=-1) mm=8; if (parStr.toUpperCase().indexOf("OCT")!=-1) mm=9; if (parStr.toUpperCase().indexOf("NOV")!=-1) mm=10; if (parStr.toUpperCase().indexOf("DEC")!=-1) mm=11; d=new Date(); d.setDate(1); d.setYear(yyyy); d.setMonth(mm); d.setDate(dd); d.setHours(12); ww=d.getDay(); if (ww==0) wDay="Sunday"; if (ww==1) wDay="Monday"; if (ww==2) wDay="Tuesday"; if (ww==3) wDay="Wednesday"; if (ww==4) wDay="Thursday"; if (ww==5) wDay="Friday"; if (ww==6) wDay="Saturday"; alert (dd+"."+(mm+1)+"."+yyyy+" is "+wDay); } function countDays(parStr) { while (parStr.charAt(parStr.length-1)==" ") parStr=parStr.substring(0,parStr.length-1); while (parStr.charAt(0)==" ") parStr=parStr.substring(1,parStr.length); var nDays = 0; var dd=parseInt(parStr,10); var yyyy=parseInt(parStr.substring(parStr.lastIndexOf(" ")+1,parStr.length)); var mm=-1; if (parStr.toUpperCase().indexOf("JAN")!=-1) mm=0; if (parStr.toUpperCase().indexOf("FEB")!=-1) mm=1; if (parStr.toUpperCase().indexOf("MAR")!=-1) mm=2; if (parStr.toUpperCase().indexOf("APR")!=-1) mm=3; if (parStr.toUpperCase().indexOf("MAY")!=-1) mm=4; if (parStr.toUpperCase().indexOf("JUN")!=-1) mm=5; if (parStr.toUpperCase().indexOf("JUL")!=-1) mm=6; if (parStr.toUpperCase().indexOf("AUG")!=-1) mm=7; if (parStr.toUpperCase().indexOf("SEP")!=-1) mm=8; if (parStr.toUpperCase().indexOf("OCT")!=-1) mm=9; if (parStr.toUpperCase().indexOf("NOV")!=-1) mm=10; if (parStr.toUpperCase().indexOf("DEC")!=-1) mm=11; var dNow = new Date(); var d = new Date(); d.setDate(1); d.setYear(yyyy); d.setMonth(mm); d.setDate(dd); d.setHours(12); if (dNow>d) nDays=Math.floor(((dNow-0)-(d-0))/1000/3600/24); alert ("You have lived "+nDays+" days"); } // -->
3. 2000年问题(Year 2000 Problem)
这是关于千年虫问题的讨论,现在2000已经过去很久了,这个已经不存在了。有兴趣可以直接点击链接,查看原文。