JavaScript Date() 日期與時間

JavaScript 沒有日期資料型態,但有提供 Date() 物件,使用日期物件、可以取得及設置日期時間的方法。日期物件有多種的方法來設定及取得。使用時有可能會因為瀏覽器或作業系統之不同,而顯示出不同的結果。在計算「以前」的日期時注意瀏覽器差異有出現例如台北夏令時間、日光節約時間之問題。



JavaScript 取得某月天數

日期中的日固定設為 0。例如 2014 的 2月份天數為。days 即是當月天數

let days = new Date(2014,2,0).getDate();

JavaScript 毫秒轉換成日期:Milliseconds to Date in JavaScript

let num = 1305856000000;
let dd = new Date(num);
console.log(dd.toString() + "<br />");
let months = "一月,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月,十二月".split(",");
let weekdays = "星期日,星期一,星期二,星期三,星期四,星期五,星期六".split(",");
console.log( months[dd.getMonth()] );
console.log( weekdays[dd.getDay()] );

計算兩個時間差(天數) Difference between dates in JavaScript

let dt1 = new Date(2015, 8, 1);
let dt2 = new Date(2015, 8, 15);
console.log((dt2 - dt1) / (1000 * 60 * 60 * 24)); // 將毫秒計算成天數 86400000


產生日期與時間

建立日期物件實體,初始值設為當下的日期與本地時間。

new Date()

用於產生一個日期和時間、如果沒有指定參數,物件預設值為產生物件的日期與本地時間。而本地時間是指執行 JavaScript new Date() 的用戶電腦時間。

let dt = new Date();
console.log(dt);
let dt = (+new Date()); // Date.now() milliseconds 微秒數
console.log(dt);

new Date(日期時間字串)

指定參數,日期時間字串則傳回參數的日期。

console.log(new Date("2015/6/30 10:30:12"));

new Date(年, 月, 日 [, 時, 分, 秒, 毫秒])

時, 分, 秒, 毫秒為選擇性的參數,沒有設定時以零取代,與上例比較月份是由零開始所以是 5。如果參數值超過預定值時,會取超過值並進位上一位時間值。

console.log(new Date(2015, 5, 30, 10, 30, 12));

console.log(new Date(1950, 5, 1));

1950 台北夏令時間,新版瀏覽器顯示出的會有差異。(一小時)

console.log(new Date(1975, 5, 1));

1950 台北夏令時間,新版瀏覽器顯示出的會有差異。(一小時)



日期 get 方法

將當時的日期指定到 dt 物件變數。

let dt = new Date();

getYear() 取得年份

console.log(dt.getYear()); // 取得年份是錯誤的

getFullYear() 取得年份

console.log(dt.getFullYear()); // 採用四位數西歷年才正確

getMonth() 取得月份、從 0 開始算起

取得月份 : 一月 = 0, 二月 = 1, 三月 = 2, 四月 = 3, 五月 = 4, 六月 = 5, 七月 = 6...十月 = 9, 十一月 = 10, 十二月 = 11

console.log(dt.getMonth());

建立一個 Array 陣列物件、用來存放相對映於索引編號的 month 月份名稱。

let dt = new Date();
let month = new Array(12);
month[0] = "一月";
month[1] = "二月";
month[2] = "三月";
month[3] = "四月";
month[4] = "五月";
month[5] = "六月";
month[6] = "七月";
month[7] = "八月";
month[8] = "九月";
month[9] = "十月";
month[10] = "十一月";
month[11] = "十二月";
console.log("本月份 = " + month[dt.getMonth()]);

getDate() 取得日(天) 1~31

console.log(dt.getDate());

getDay() 取得星期

星期日 = 0, 星期一 = 1, 星期二 = 2, 星期三 = 3, 星期四 = 4,星期五 = 5, 星期六 = 6

console.log(dt.getDay());


時間 get 方法

getHours() 取得時數 0~23 台北標準時間 +8

console.log(dt.getHours());

getUTCHours() 取得(國際標準時間)時數 0~23

console.log(dt.getUTCHours()); // UTC 表示 Coordinated Universal Time 國際標準時間

getMinutes() 取得分鐘 0~59

console.log(dt.getMinutes());

getSeconds() 取得秒數 0~59

console.log(dt.getSeconds());

getMilliseconds() 取得毫秒數 0~999

console.log(dt.getMilliseconds());

getTime() 取得時間 (由 1970年1月1日零時零分計起到目前時間) 單位:(毫秒)

console.log(dt.getTime());

getTimezoneOffset() 取得 GMT 減去本地時間的值 單位:(分鐘)

console.log(dt.getTimezoneOffset()); // 數值會受日光節約時間之影響


日期 set 方法

setFullYear() 設置年份 (四位數字)

dt.setFullYear(2008)
console.log(dt.getFullYear());
2008

setMonth() 設置月份 0~11

dt.setMonth(5)
console.log(dt.getMonth());
5

setDate() 設置日(天) 1~31

dt.setDate(3)
console.log(dt.getDate());
3

let dt = new Date();
dt.setMonth(5); // 5 等於六月
dt.setDate(31);

因為六月沒有31日,所以返回的會是7月1日。



時間 set 方法

setHours() 設置時數 0~23

dt.setHours(10);
console.log(dt.getHours());
10

setMinutes() 設置分鐘 0~59

dt.setMinutes(30);
console.log(dt.getMinutes());
30

setSeconds() 設置秒數 0~59

dt.setSeconds(12);
console.log(dt.getSeconds());
12

setMilliseconds() 設置毫秒數 0~999

dt.setMilliseconds(280);
console.log(dt.getMilliseconds());
280