2008
08.16

使用 JavaScript 寫的計時器

有人說他也要在 blog 上貼當兵的剩餘天數,問我大概要怎麼寫,概念大概如下(可以直接抓 blog 上的 JS 看比較快,還可以發現我用了一個很爛的小技巧來顯示每天都會刪掉一個日期的那張圖片):

/* 計算已經服役天數 */
var now = new Date();
var day = new Date(2007,10-1,17);
/* 這個是入伍日期,上面的寫法是:我在 2007 年 10 月 17 入伍 */
day = (now.getTime()- day.getTime())/(24*60*60*1000);
/* 現在時間減去入伍時間,為 Unix 系統時間,毫秒 */
day = Math.ceil(day);
/*傳回指定數字或運算式的最小整數 */
if (day < 0)
    document.write("還有 <strong>" + day*-1 + "</strong> 天入伍。");
else
    document.write("已經服役 <strong>" + day + "</strong> 天。");

算出來的結果是已經服役了幾天(當然也可以算還有幾天入伍),也可以稍作修改,計算剩餘天數,例如現在役期為一年,也就是 365 天,扣掉折抵天數,再減掉服役天數,就是剩餘天數,也就是:

day = Math.ceil(day);
day -= 365 - 折抵役期天數;
document.write("剩下 <strong>" + day + "</strong> 天。");

這個小程式的概念就是利用 Unix 的 timestamp 來相減,只要計算出既有時間的 timestamp 以及目標時間的 timestamp ,兩者相減之後再把秒數除以 86400000 化為天數再取整數即可。

這樣就是服役天數了,當然這個小工具也可以應用在各類的倒數計時上面,像是考試或是生日..等等。另外如果要針對當兵的倒數,這邊有個「退伍日期計時器」,堪稱歷史最悠久最專業的倒數計時器。 :mrgreen:

2 comments so far

Add Your Comment
  1. 不錯,感謝共用。

  2. 生日快樂,
    祝你永遠快樂。

    我一直覺得,
    你是影響我生命的重要人物之一,
    因為有你我現在可以很幸福,
    也希望你可以很幸福唷 :)

:D :-) :( :o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>