创建 Date 实例用来处理日期和时间。Date 对象基于1970年1月1日(世界标准时间)起的毫秒数。
构造函数
接受7个可选参数,Date.length 的值是 7。这是该构造函数可接受的参数个数。
new Date();
new Date(value);
new Date(dateString);
new Date(year, month[, day[, hour[, minutes[, seconds[, milliseconds]]]]]);
有哪些标准定义时间
- GMT 格林尼治标准时间
- UTC 国际标准时间
GMT与UTC 的区别
格林尼治标准时间(GMT,旧译“格林威治平均时间”或“格林威治标准时间”)是指位于伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。 理论上来说,格林尼治标准时间的正午是指当太阳横穿格林尼治子午线时(也就是在格林尼治上空最高点时)的时间。由于地球在它的椭圆轨道里的运动速度不均匀,这个时刻可能和实际的太阳时相差16分钟。 地球每天的自转是有些不规则的,而且正在缓慢减速。所以,格林尼治时间已经不再被作为标准时间使用。现在的标准时间——协调世界时(UTC)——由原子钟提供。
ISO-8601
UTC 是时间标准;ISO-8601是表示时间的一种标准格式,多数编程语言都支持。
2016-01-18T23:41:00 是符合 ISO-8601 标准的时间表示。
2016-01-18T23:41:00 里面的 T 表示 UTC,所以这个字符串解析后就表示 UTC 时间的 2016-01-18 23:41:00,那么再转换为北京当地时间展示(比如,在 JavaScript 里面 new Date('2016-01-18T23:41:00').toLocaleString())时就会加上 8 小时的偏移,变成:2016-01-19 7:41:00。
日期对象转换字符串
// GMT+0800 表示是“东八区”,CST 表示是“中国标准时间(China Standard Time)
new Date()
Thu Mar 01 2018 17:51:36 GMT+0800 (CST)
new Date().toUTCString()
"Thu, 01 Mar 2018 12:04:01 GMT"
new Date().toGMTString()
"Thu, 01 Mar 2018 09:12:46 GMT"
new Date().toISOString() // T代表UTC标准,转换北京时间+8小时
"2018-03-01T09:13:21.674Z"
new Date().toTimeString()
"17:13:50 GMT+0800 (CST)"
new Date().toJSON()
"2018-03-01T09:11:40.129Z"
new Date().valueOf()
1519895727502
new Date().getTime()
1519895738005
new Date().toDateString()
"Thu Mar 01 2018"
new Date().toLocaleDateString()
"2018/3/1"
计算两个日期对象的时间差
// 使用 Date 对象
var start = Date.now();
// 这里进行耗时的方法调用:
doSomethingForALongTime();
var end = Date.now();
var elapsed = end - start; // 运行时间的毫秒值
// 使用内建的创建方法
var start = new Date();
// 这里进行耗时的方法调用:
doSomethingForALongTime();
var end = new Date();
var elapsed = end.getTime() - start.getTime(); // 运行时间的毫秒值
日期的加减
function addDate(date,days){
var d=new Date(date);
d.setDate(d.getDate()+days);
var m=d.getMonth()+1;
return d.getFullYear()+'-'+m+'-'+d.getDate();
}
其中,date参数是要进行加减的日期,days参数是要加减的天数,如果往前算就传入负数,往后算就传入正数,如果是要进行月份的加减,就调用setMonth()和getMonth()就可以了,需要注意的是返回的月份是从0开始计算的,也就是说返回的月份要比实际月份少一个月,因此要相应的加上1,类似时分秒加减 setHours(),setMinutes(),setSeconds()。