JavaScript Date 時間和日期
JavaScript 的 Date 物件讓你可以用來做跟日期和時間相關的操作。
宣告 Date 物件 (Creating Date Object)
建立一個表示現在的 Date 物件 (Current Date and Time)
語法:
new Date();
用法:
var today = new Date();
建立特定時間點的 Date 物件 - 傳入一個數字 (Timestamp)
傳入的參數是一個數字,值表示從 1970-01-01 00:00:00 UTC (格林威治標準時間) 開始累計到某時間點的毫秒數 (milliseconds)。
語法:
new Date(milliseconds);
用法:
// Sat Dec 10 2016 17:16:06 GMT+0800 (CST)
var date = new Date(1481361366000);
例如一天總共有 86,400,000 毫秒 (606024*1000)。
建立特定時間點的 Date 物件 - 傳入多個數字,指定年、月、日、時、分、秒、毫秒
語法:
new Date(year, month[, date[, hours[, minutes[, seconds[, milliseconds]]]]]);
參數 "時" 採 24 小時制。
用法:
// Sun Dec 17 1995 23:30:15 GMT+0800 (CST)
var birthday = new Date(1995, 11, 17, 23, 30, 15);
JavaScript 表達月份 (month) 是從 0 到 11,0 是一月;11 是十二月。
也可以省略在後面的參數,不設定預設為 0:
// Sun Dec 17 1995 00:00:00 GMT+0800 (CST)
var birthday = new Date(1995, 11, 17);
Date 物件參數的日期,預設的時區 (time zone) 是本地時區 (local time),也就是你瀏覽器作業系統設定的時區。
如果傳入的日期和時間參數超出正常範圍,例如月份輸入 13,秒數輸入 80,JavaScript 會自動增減做進位。例如,new Date(2018, 13, 1)
會被看作是 new Date(2019, 1, 1)
;new Date(2016, 9, 10, 0, 80)
會被看作是 new Date(2016, 9, 10, 1, 20)
。
建立特定時間點的 Date 物件 - 將時間文字轉換成 Date 物件
語法:
new Date(dateString);
用法:
// Tue Mar 15 2016 08:00:00 GMT+0800 (CST)
var someday = new Date('Wed Mar 15 2016 08:00:00 GMT+0800 (CST)');
JavaScript 支援所有可以被 parse 的時間格式,詳細請看 parse() 方法的介紹。
日期時間比較 (Compare Dates)
你可以用 >
, <
, <=
, >=
, <==
或 >==
運算子來比較兩個 Date 物件的時間前後關係:
var today = new Date();
var someday = new Date(2022, 10, 1);
if (someday > today) {
alert('Today is before 2022/10/1.');
} else {
alert('Today is after 2022/10/1.');
}
但如果你要比較兩個日期是否相等 - 運算子 ==
, !=
, ===
或 !==
,你沒辦法直接比較,而是要先將 Date 物件用 date.getTime()
轉換為數值型態才能比較:
var d1 = new Date(2016, 1, 1);
var d2 = new Date(2016, 1, 1);
var same = d1.getTime() === d2.getTime(); // true
var notSame = d1.getTime() !== d2.getTime(); // false
Date 物件提供的方法 (Methods)
將時間字串轉成從 1970-01-01 00:00:00 UTC 開始累計到現在的毫秒數 (milliseconds):
取得日期和時間相關的方法:
方法 | 用途 |
---|---|
getFullYear() | 取得是幾年 (yyyy) |
getMonth() | 取得是幾月 (0-11) |
getDate() | 取得是幾日 (1-31) |
getHours() | 取得是幾時 (0-23) |
getMinutes() | 取得是幾分 (0-59) |
getSeconds() | 取得是幾秒 (0-59) |
getMilliseconds() | 取得是幾毫秒 (0-999) |
getDay() | 取得是星期幾 (0-6) |
getTime() | 取得從 1970-01-01 00:00:00 UTC 累計的毫秒數 |
設定日期和時間相關的方法:
方法 | 用途 |
---|---|
setFullYear() | 設定是是幾年 |
setMonth() | 設定是幾月 (0-11) |
setDate() | 設定是幾日 (1-31) |
setHours() | 設定是幾時 (0-23) |
setMinutes() | 設定是幾分 (0-59) |
setSeconds() | 設定是幾秒 (0-59) |
setMilliseconds() | 設定是幾毫秒 (0-999) |
setTime() | 用 timestamp milliseconds 設定是什麼日期時間 |
UTC 時區相關的操作
由 UTC 時區的日期和時間取得從 1970-01-01 00:00:00 UTC 開始累計到你指定的時間點的毫秒數 (milliseconds):
取得日期和時間相關的方法:
方法 | 用途 |
---|---|
getUTCFullYear() | 同 getFullYear(),但時區是 UTC |
getUTCMonth() | 同 getMonth(),但時區是 UTC |
getUTCDate() | 同 getDate(),但時區是 UTC |
getUTCHours() | 同 getHours(),但時區是 UTC |
getUTCMinutes() | 同 getMinutes(),但時區是 UTC |
getUTCSeconds() | 同 getSeconds(),但時區是 UTC |
getUTCMilliseconds() | 同 getMilliseconds(),但時區是 UTC |
getUTCDay() | 同 getDay(),但時區是 UTC |
toUTCString() | 取得 UTC 時區的時間字串 |
設定日期和時間相關的方法:
方法 | 用途 |
---|---|
setUTCFullYear() | 同 setFullYear(),但時區是 UTC |
setUTCMonth() | 同 getMonth(),但時區是 UTC |
setUTCDate() | 同 setDate(),但時區是 UTC |
setUTCHours() | 同 setHours(),但時區是 UTC |
setUTCMinutes() | 同 setMinutes(),但時區是 UTC |
setUTCSeconds() | 同 setSeconds(),但時區是 UTC |
setUTCMilliseconds() | 同 setMilliseconds(),但時區是 UTC |