JavaScript Date 時間和日期
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);
用法:
var date = new Date(1481361366000); //Sat Dec 10 2016 17:16:06 GMT+0800 (CST)
例如一天總共有 86,400,000 毫秒 (606024*1000)。
建立特定時間點的 Date 物件 -
傳入多個數字,指定年、月、日、時、分、秒、毫秒
語法:
new Date(year, month[, date[, hours[, minutes[, seconds[, milliseconds]]]]]);
參數 "時" 採 24 小時制。
用法:
var birthday = new Date(1995, 11, 17, 23, 30, 15); // Sun Dec 17 1995 23:30:15 GMT+0800 (CST)
JavaScript 表達 月份 (month) 是從 0 到 11,0 是一月;11 是十二月。
也可以省略在後面的參數,不設定預設為 0:
var birthday = new Date(1995, 11, 17); // Sun Dec 17 1995 00:00:00 GMT+0800 (CST)
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);
用法:
var someday = new Date('Wed Mar 15 2016 08:00:00 GMT+0800 (CST)'); // Tue 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):
parse() 將日期時間字串轉成一個數字,這數字表示從 1970-01-01 00:00:00 UTC (格林威治標準時間)
開始累計到現在的毫秒數 (milliseconds)。 parse() 底層其實是執行 new Date(dateString)。
用法: YYYY-MM-DD YYYY-MM (DD 日預設為 1) YYYY (MM-DD 月日預設為 1)
YYYY-MM-DDTHH:MM:SS (T 用來分隔開日期和時間) . . . . . . 等等
Date.parse('2016-05-10'); // 1462838400000
Date.parse('2016-05'); // 1462060800000
取得日期和時間相關的方法:
方法 | 用途 |
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):
Date.UTC( )
語法:
Date.UTC(year, month[, day[, hour[, minute[, second[, millisecond]]]]])
// 參數的用法和 new Date 一樣。
取得日期和時間相關的方法:
方法 | 用途 |
getUTCFullYear() | 同 getFullYear(),但時區是 UTC (yyyy) |
getUTCMonth() | 同 getMonth(),但時區是 UTC (0-11) |
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 |