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