JavaScript 語法 流程控制 Function (函數) Object (物件) 數值 布林值 字串 陣列 時間和日期 Math 物件
正規表示式 瀏覽器物件模型 BOM JS DOM HTML DOM CSS樣式 & Event CSS屬性

JavaScript 語法 JavaScript Date 時間和日期

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