當(dāng)前位置:軟件學(xué)堂 > 資訊首頁 > 網(wǎng)絡(luò)編程 > 編程其他 > 利用JS計(jì)算距離某天的時(shí)間

利用JS計(jì)算距離某天的時(shí)間

2012/11/5 19:16:03作者:佚名來源:網(wǎng)絡(luò)

移動(dòng)端

【實(shí)例名稱】

利用JS計(jì)算距離某天的時(shí)間

【實(shí)例描述】

距離某天的時(shí)間一般用于提醒特別重大的日子,如建國、結(jié)婚紀(jì)念日等。本例以建國日為標(biāo)準(zhǔn),學(xué)習(xí)如何獲取距離某天的時(shí)間。

【實(shí)例代碼】

<html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>標(biāo)題頁-學(xué)無憂(www.wangbatian.cn)</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"> 距離建國已經(jīng) </FONT> </body> </html>

【運(yùn)行效果】

 距離某天的時(shí)間運(yùn)行效果

【難點(diǎn)剖析】

本例的重點(diǎn)在于時(shí)間(天、時(shí)、分、秒)的獲取。在“showtimel”方法中,使用“new Date("Oct 1,1949 00:00EDT”)”創(chuàng)建了一個(gè)建國日期對(duì)象,又使用“new Date()
獲取當(dāng)前的日期對(duì)象。最后分別獲取兩個(gè)時(shí)間的天數(shù)、小時(shí),分、秒的間隔,并在文本框中顯示最后的計(jì)算結(jié)果。

【源碼下載】

為了JS代碼的準(zhǔn)確性,請(qǐng)點(diǎn)擊:距離某天的時(shí)間 進(jìn)行本實(shí)例源碼下載 

標(biāo)簽: JS計(jì)算  時(shí)間