javascript時間和日期,實現時鐘功能之淺析

javascript時間和日期,實現時鐘功能

ECMAScript 提供了 Date 類型來處理時間和日期。 Date 類型內置一系列獲取和設置日期時間信息的方法。


一. Date 類型

ECMAScript 中的 Date 類型是在早期 Java 中 java.util.Date 類基礎上構建的。 爲此, Date類型使用 UTC (Coordinated Universal Time,國際協調時間[又稱世界統一時間]) 1970 年 1 月1 日午夜(零時)開始經過的毫秒來保存日期。在使用這種數據存儲格式的條件下,Date 類型保存的日期能夠精確到 1970 年 1 月 1 日之前或之後的 285616 年。

創建一個日期對象,使用 new 運算符和 Date 構造方法(構造函數)即可。

var box = new Date(); //創建一個日期對象

在調用 Date 構造方法而不傳遞參數的情況下, 新建的對象自動獲取當前的時間和日期。

alert(box); //不同瀏覽器顯示不同

ECMAScript 提供了兩個方法,Date.parse()和 Date.UTC()。Date.parse()方法接收一個表示日期的字符串參數,然後嘗試根據這個字符串返回相應的毫秒數。

Date.parse()應該支持哪種日期格式,因此方法的行爲因實現而異,因地區而異。默認通常接收的日期格式如下:

1.'月/日/年',如 6/13/2011;

2.'英文月名 日, 年',如 May 25, 2004;

3.'英文星期幾 英文月名 日 年 時:分:秒 時區', 如 Tue May 25 2004 00:00:00 GMT-070

alert(Date.parse('6/13/2011')); //1307894400000

如果 Date.parse()沒有傳入或者不是標準的日期格式,那麼就會返回 NaN。

alert(Date.parse()); //NaN

如果想輸出指定的日期,那麼把 Date.parse()傳入 Date 構造方法裏。

var box = new Date(Date.parse('6/13/2011'));//Mon Jun 13 2011 00:00:00 GMT+0800

var box = new Date('6/13/2011'); //直接傳入,Date.parse()後臺被調用

Date.UTC()方法同樣也返回表示日期的毫秒數, 但它與 Date.parse()在構建值時使用不同的信息。 (年份, 基於 0 的月份[0 表示 1 月, 1 表示 2 月], 月中的哪一天[1-31], 小時數[0-23] ,分鐘,秒以及毫秒)。只有前兩個參數是必須的。如果沒有提供月數,則天數爲 1;如果省略其他參數,則統統爲 0.

alert(Date.UTC(2011,11)); //1322697600000

如果 Date.UTC()參數傳遞錯誤,那麼就會出現負值或者 NaN 等非法信息。

alert(Date.UTC()); //負值或者 NaN

如果要輸出指定日期,那麼直接把 Date.UTC()傳入 Date 構造方法裏即可。

var box = new Date(Date.UTC(2011,11, 5, 15, 13, 16));

二. 通用的方法

與其他類型一樣,Date 類型也重寫了 toLocaleString()、toString()和 valueOf()方法;但這些方法返回值與其他類型中的方法不同。

var box = new Date(Date.UTC(2011,11, 5, 15, 13, 16));

alert('toString:' + box.toString());

alert('toLocaleString:' + box.toLocaleString()); //按本地格式輸出

注:這兩個方法在不同瀏覽器顯示的效果又不一樣,但不用擔心,這兩個方法只是在調試比較有用,在顯示時間和日期上,沒什麼價值。valueOf()方法顯示毫秒數。

三. 日期格式化方法

Date 類型還有一些專門用於將日期格式化爲字符串的方法。

var box = new Date();

alert(box.toDateString()); //以特定的格式顯示星期幾、月、日和年

alert(box.toTimeString()); //以特定的格式顯示時、分、秒和時區

alert(box.toLocaleDateString()); //以特定地區格式顯示星期幾、月、日和年

alert(box.toLocaleTimeString()); //以特定地區格式顯示時、分、秒和時區

alert(box.toUTCString()); //以特定的格式顯示完整的 UTC 日期。

四. 組件方法

組件方法,是爲我們單獨獲取你想要的各種時間/日期而提供的方法。需要注意的時候 ,這些方法中,有帶 UTC 的,有不帶 UTC 的。UTC 日期指的是在沒有時區偏差的情況下的日期值。

alert(box.getTime()); //獲取日期的毫秒數,和 valueOf()返回一致

alert(box.setTime(100)); //以毫秒數設置日期,會改變整個日期

alert(box.getFullYear()); //獲取四位年份

alert(box.setFullYear(2012)); //設置四位年份,返回的是毫秒數

alert(box.getMonth()); //獲取月份,沒指定月份,從 0 開始算起

alert(box.setMonth(11)); //設置月份

alert(box.getDate()); //獲取日期

alert(box.setDate(8)); //設置日期,返回毫秒數

alert(box.getDay()); //返回星期幾,0 表示星期日,6 表示星期六

alert(box.setDay(2)); //設置星期幾

alert(box.getHours()); //返回時

alert(box.setHours(12)); //設置時

alert(box.getMinutes()); //返回分鐘

alert(box.setMinutes(22)); //設置分鐘

alert(box.getSeconds()); //返回秒數

alert(box.setSeconds(44)); //設置秒數

alert(box.getMilliseconds()); //返回毫秒數

alert(box.setMilliseconds()); //設置毫秒數

alert(box.getTimezoneOffset()); //返回本地時間和 UTC 時間相差的分鐘數

注: 以上方法除了 getTimezoneOffset(), 其他都具有 UTC 功能, 例如 setDate()及 getDate()獲取星期幾,那麼就會有 setUTCDate()及 getUTCDate()。表示世界協調時間。

最後附上代碼


javascript時間和日期,實現時鐘功能


發佈了164 篇原創文章 · 獲贊 240 · 訪問量 89萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章