| 編程(Programming)是編定程序的中文簡(jiǎn)稱,就是讓計(jì)算機(jī)代碼解決某個(gè)問題,對(duì)某個(gè)計(jì)算體系規(guī)定一定的運(yùn)算方式,使計(jì)算體系按照該計(jì)算方式運(yùn)行,并最終得到相應(yīng)結(jié)果的過程。為了使計(jì)算機(jī)能夠理解(understand)人的意圖,人類就必須將需解決的問題的思路、方法和手段通過計(jì)算機(jī)能夠理解的形式告訴計(jì)算機(jī),使得計(jì)算機(jī)能夠根據(jù)人的指令一步一步去工作,完成某種特定的任務(wù)。這種人和計(jì)算體系之間交流的過程就是編程。 【實(shí)例名稱】 利用JS計(jì)算距離某天的時(shí)間 【實(shí)例描述】 距離某天的時(shí)間一般用于提醒特別重大的日子,如建國(guó)、結(jié)婚紀(jì)念日等。本例以建國(guó)日為標(biāo)準(zhǔn),學(xué)習(xí)如何獲取距離某天的時(shí)間。 【實(shí)例代碼】 <html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>標(biāo)題頁-本站(www.xue51.com)</title>
</head>
<body bgcolor="#fef4d9" onLoad="startclock()">
<SCRIPT LANGUAGE="JavaScript">
//基本變量的定義
var timerID;
var timerRunning = false;
var today = new Date();
var startday = new Date();
var secPerDay = 0;
var minPerDay = 0;
var hourPerDay = 0;
var secsLeft = 0;
var secsRound = 0;
var secsRemain = 0;
var minLeft = 0;
var minRound = 0;
var minRemain = 0;
var timeRemain = 0; //停止定時(shí)器的方法
function stopclock()
{
if(timerRunning)
clearTimeout(timerID); timerRunning = false;
}
//開始定時(shí)器的方法
function startclock()
{
stopclock();
showtime1();
}
//計(jì)算時(shí)間的方法
function showtime1()
{
startday = new Date("Oct 20, 1949 00:00 EDT");
//創(chuàng)建初始時(shí)間
startday.setYear("1949");
//設(shè)置年份
today = new Date();
//獲取當(dāng)前時(shí)間
secsPerDay = 1000 ;
//最終轉(zhuǎn)換為毫秒
minPerDay = 60 * 1000 ;
//每分鐘的毫秒
hoursPerDay = 60 * 60 * 1000;
//每小時(shí)的毫秒
PerDay = 24 * 60 * 60 * 1000;
//每天的毫秒 /* Seconds */
secsLeft = (today.getTime() -
startday.getTime()) / minPerDay;
//距今天的分鐘數(shù)
secsRound = Math.round(secsLeft);
//四舍五入
secsRemain = secsLeft - secsRound;
secsRemain = (secsRemain < 0) ? secsRemain =
60 - ((secsRound - secsLeft) * 60) : secsRemain =
(secsLeft - secsRound) * 60;
secsRemain = Math.round(secsRemain);
//計(jì)算取分鐘后剩余的秒數(shù) /* 分鐘*/
minLeft = ((today.getTime() -
startday.getTime()) / hoursPerDay);
//距今天的小時(shí)數(shù)
minRound = Math.round(minLeft);
//四舍五入
minRemain = minLeft - minRound;
minRemain = (minRemain < 0) ? minRemain = 60 -
((minRound - minLeft) * 60) : minRemain =
((minLeft - minRound) * 60);
minRemain = Math.round(minRemain - 0.495);
//計(jì)算取小時(shí)后剩余的分鐘數(shù) /* 小時(shí) */
hoursLeft = ((today.getTime() -
startday.getTime()) / PerDay);
//距今天的天數(shù)
hoursRound = Math.round(hoursLeft);
//四舍五入
hoursRemain = hoursLeft - hoursRound;
hoursRemain = (hoursRemain < 0) ?
hoursRemain = 24 - ((hoursRound - hoursLeft) * 24) :
hoursRemain = ((hoursLeft - hoursRound) * 24);
hoursRemain = Math.round(hoursRemain - 0.5);
//計(jì)算取天數(shù)后剩余的小時(shí)數(shù) /* 天 */
daysLeft = ((today.getTime() -
startday.getTime()) / PerDay);
//距今天的天數(shù)
daysLeft = (daysLeft - 0.5);
daysRound = Math.round(daysLeft);
//四舍五入
daysRemain = daysRound; /* Time */
day_rem = " 天, "
hour_rem = " 小時(shí), "
min_rem = " 分, "
sec_rem = " 秒"
timeRemain = daysRemain + day_rem + hoursRemain
+ hour_rem + minRemain + min_rem + secsRemain + sec_rem;
document.up.myTxt.value = timeRemain;
//使用文本框輸出內(nèi)容
timerID = setTimeout("showtime1()",1000);
//每隔1秒更新下時(shí)間
timerRunning = true;
} </SCRIPT>
<FORM NAME="up">
<INPUT TYPE="text" NAME="myTxt" SIZE="47" VALUE="">
</FORM>
<P>
<FONT SIZE=+1 FACE="Arial">
距離建國(guó)已經(jīng)
</FONT>
</body>
</html>
【運(yùn)行效果】  【難點(diǎn)剖析】 本例的重點(diǎn)在于時(shí)間(天、時(shí)、分、秒)的獲取。在“showtimel”方法中,使用“new Date("Oct 1,1949 00:00EDT”)”創(chuàng)建了一個(gè)建國(guó)日期對(duì)象,又使用“new Date() 獲取當(dāng)前的日期對(duì)象。最后分別獲取兩個(gè)時(shí)間的天數(shù)、小時(shí),分、秒的間隔,并在文本框中顯示最后的計(jì)算結(jié)果。 【源碼下載】 為了JS代碼的準(zhǔn)確性,請(qǐng)點(diǎn)擊:距離某天的時(shí)間 進(jìn)行本實(shí)例源碼下載
使用編程語言寫的程序,由于每條指令都對(duì)應(yīng)計(jì)算機(jī)一個(gè)特定的基本動(dòng)作,所以程序占用內(nèi)存少、執(zhí)行效率高。 |