首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Date

创建?Date实例用来处理日期和时间。Date 对象基于1970年1月1日(世界标准时间)起的毫秒数。

语法

代码语言:javascript
复制
new Date();
new Date(value);
new Date(dateString);
new Date(year, month[, date[, hours[, minutes[, seconds[, milliseconds]]]]]);

注: JavaScript Date对象只能通过调用Date构造函数来实例化:若以常规函数调用(即不带new运算符)将返回一个字符串,而不是Date对象; 与其他 JavaScript 对象类型不同,JavaScript Date对象没有字面量格式。

参数

注:如果Date作为构造函数并调用多个参数,如果值大于它们的合理范围(如月份为13或者分钟数为70),相邻的数值会被调整。比如 new Date(2013, 13, 1)等于 new Date(2014, 1, 1),它们都表示日期2014-02-01(注意月份是从0开始的)。其他数值也是类似,new Date(2013, 2, 1, 0, 70)等于new Date(2013, 2, 1, 1, 10),都表示时间2013-03-01T01:10:00。

注:Date作为构造函数并调用多个参数时,所定义的参数表示本地时间。如果需要使用 UTC(世界协调时),则使用new Date(Date.UTC(...)),并取相同的参数。

value代表自1970年1月1日00:00:00 (世界标准时间)?起经过的毫秒数。

dateString表示日期的字符串值。该字符串应该能被Date.parse()方法识别(符合?IETF-compliant RFC 2822 timestamps?或?version of ISO8601)。

注:由于浏览器的差异,强烈建议不要使用Date构造函数(和等价的Date.parse方法)解析日期字符串。Date构造函数仅支持 RFC 2822格式字符串。对 ISO 8601 格式的支持会有不同,对于只有日期的字符串(例如“1970-01-01”)会被视为UTC,而不是本地时间。

year代表年份的整数值。0到99的整数值,分别映射1900年到1999年的年份值。详情请参见下面的示例。

month表示月份的整数值,整数值取值范围是0到11,取0代表1月份,取11代表12月份。

date可选参数。代表一个月中的第几天的整数值。

hours可选参数。代表一天中的小时数的整数值 (24小时制)。

minutes可选参数。分钟数。

seconds可选参数。秒数。

milliseconds可选参数。表示时间的毫秒部分的整数值。

描述

  • 如果没有输入任何参数,则构造器会依据系统设置的当前时间来创建一个Date对象。

  • 如果提供了至少两个参数,其余的参数均会默认设置为1(如果没有提供day参数)或者0。

  • JavaScript的时间是由世界标准时间(UTC)1970年1月1日开始,用毫秒计时,一天由86,400,000毫秒组成。Date对象的范围是-100,000,000天至100,000,000天(等效的毫秒值)。

  • JavaScript的Date对象为跨平台提供了统一的行为。时间属性可以在不同的系统中表示相同的时刻,而如果使用了本地时间对象,则反映当地的时间。

  • JavaScript 的Date对象提供了数个UTC时间的方法,也相应提供了当地时间的方法。UTC,也就是我们所说的格林威治时间(GMT),指的是世界时间标准设置的时间。而当地时间,则是指执行JavaScript的客户端电脑所设置的时间。

  • 以一个函数的形式来调用JavaScript的Date对象(即指不使用new?操作符)会返回一个代表当前日期和时间的字符串。

属性

Date.prototype允许为?Date?实例对象添加属性。

Date.length?它的值是 7。这是该构造函数可接受的参数个数。

方法

Date.now()返回自 1970-1-1 00:00:00 ?UTC (世界标准时间)至今所经过的毫秒数。

Date.parse()解析一个表示日期的字符串,并返回从 1970-1-1 00:00:00 所经过的毫秒数。

Date.UTC()接受和构造函数最长形式的参数相同的参数(从2到7),并返回从 1970-01-01 00:00:00 UTC 开始所经过的毫秒数。

注意:Date.parse由于浏览器的差异和不一致,强烈建议不要分析字符串。

Date.UTC()接受和构造函数最长形式的参数相同的参数(从2到7),并返回从 1970-01-01 00:00:00 UTC 开始所经过的毫秒数。

JavaScript Date实例

所有的?Date?实例都继承自Date.prototype。修改?Date?构造函数的原型对象会影响到所有的?Date?实例。

Date.prototype 方法

Getter 方法

Date.prototype.getDate()根据本地时间返回指定日期对象的月份中的第几天(1-31)。

Date.prototype.getDay()根据本地时间返回指定日期对象的星期中的第几天(0-6)。

Date.prototype.getFullYear()根据本地时间返回指定日期对象的年份(四位数年份时返回四位数字)。

Date.prototype.getHours()根据本地时间返回指定日期对象的小时(0-23)。

Date.prototype.getMilliseconds()根据本地时间返回指定日期对象的微秒(0-999)。

Date.prototype.getMinutes()根据本地时间返回指定日期对象的分钟(0-59)。

Date.prototype.getMonth()根据本地时间返回指定日期对象的月份(0-11)。

Date.prototype.getSeconds()根据本地时间返回指定日期对象的秒数(0-59)。

Date.prototype.getTime()返回从1970-1-1 00:00:00 UTC(协调世界时)到该日期经过的毫秒数,对于1970-1-1 00:00:00 UTC之前的时间返回负值。

Date.prototype.getTimezoneOffset()返回当前时区的时区偏移。

Date.prototype.getDate()根据本地时间返回指定日期对象的月份中的第几天(1-31)。

Date.prototype.getDay()根据本地时间返回指定日期对象的星期中的第几天(0-6)。

Date.prototype.getFullYear()根据本地时间返回指定日期对象的年份(四位数年份时返回四位数字)。

Date.prototype.getHours()根据本地时间返回指定日期对象的小时(0-23)。

Date.prototype.getMilliseconds()根据本地时间返回指定日期对象的微秒(0-999)。

Date.prototype.getMinutes()根据本地时间返回指定日期对象的分钟(0-59)。

Date.prototype.getMonth()根据本地时间返回指定日期对象的月份(0-11)。

Date.prototype.getSeconds()根据本地时间返回指定日期对象的秒数(0-59)。

Date.prototype.getTime()返回从1970-1-1 00:00:00 UTC(协调世界时)到该日期经过的毫秒数,对于1970-1-1 00:00:00 UTC之前的时间返回负值。

Date.prototype.getTimezoneOffset()返回当前时区的时区偏移值。

注:下列基于UTC时间的方法,和上面基于本地时间的方法是相似的

Date.prototype.getUTCDate()根据UTC时间返回指定日期对象的月份中的第几天(1-31)。

Date.prototype.getUTCDay()根据UTC时间返回指定日期对象的星期中的第几天(0-6)。

Date.prototype.getUTCFullYear()根据UTC时间返回指定日期对象的年份(四位数年份时返回四位数字)。

Date.prototype.getUTCHours()根据UTC时间返回指定日期对象的小时(0-23)。

Date.prototype.getUTCMilliseconds()根据UTC时间返回指定日期对象的微秒(0-999)。

Date.prototype.getUTCMinutes()根据UTC时间返回指定日期对象的分钟(0-59)。

Date.prototype.getUTCMonth()据UTC时间返回指定日期对象的月份(0-11)。

Date.prototype.getUTCSeconds()根据UTC时间返回指定日期对象的秒数(0-59)。

Date.prototype.getYear()根据UTC时间返回指定日期对象的年份(通常为2-3位数字)。请使用getFullYear()替代.

Setter 方法

Date.prototype.setDate()根据本地时间为指定的日期对象设置月份中的第几天。

Date.prototype.setFullYear()根据本地时间为指定日期对象设置完整年份(四位数年份是四个数字)。

Date.prototype.setHours()根据本地时间为指定日期对象设置小时数。

Date.prototype.setMilliseconds()根据本地时间为指定日期对象设置毫秒数。

Date.prototype.setMinutes()根据本地时间为指定日期对象设置分钟数。

Date.prototype.setMonth()根据本地时间为指定日期对象设置月份。

Date.prototype.setSeconds()根据本地时间为指定日期对象设置秒数。

Date.prototype.setTime()通过指定从 1970-1-1 00:00:00 UTC 开始经过的毫秒数来设置日期对象的时间,对于早于 1970-1-1 00:00:00 UTC的时间可使用负值。

Date.prototype.setUTCDate()根据世界时设置 Date 对象中月份的一天 (1 ~ 31)。

Date.prototype.setUTCFullYear()根据世界时设置 Date 对象中的年份(四位数字)。

Date.prototype.setUTCHours()根据世界时设置 Date 对象中的小时 (0 ~ 23)。

Date.prototype.setUTCMilliseconds()根据世界时设置 Date 对象中的毫秒 (0 ~ 999)。

Date.prototype.setUTCMinutes()根据世界时设置 Date 对象中的分钟 (0 ~ 59)。

Date.prototype.setUTCMonth()根据世界时设置 Date 对象中的月份 (0 ~ 11)。

Date.prototype.setUTCSeconds()根据世界时设置 Date 对象中的秒钟 (0 ~ 59)。

Date.prototype.setYear()setYear() 方法用于设置年份。请使用?setFullYear()方法代替。

Conversion getter 方法

Date.prototype.toDateString()以更易读的形式返回该日期对象日期部分的字符串,形如 “Wed Jul 28 1993”。

Date.prototype.toISOString()把一个日期转换为符合 ISO 8601 扩展格式的字符串。该方法将会返回一个 ISO(ISO 8601 Extended Format)格式的字符串:?YYYY-MM-DDTHH:mm:ss.sssZ。时区总是UTC(协调世界时),加一个后缀“Z”标识。

Date.prototype.toJSON()使用toISOString()返回一个表示该日期的字符串。目的是为了能在JSON.stringify()方法中使用。

Date.prototype.toGMTString()返回一个基于 GMT (UT) 时区的字符串来表示该日期。请使用toUTCString()方法代替。

Date.prototype.toLocaleDateString()返回一个表示该日期对象日期部分的字符串,该字符串格式与系统设置的地区关联(locality sensitive)。

Date.prototype.toLocaleFormat()使用格式字符串将日期转换为字符串。

Date.prototype.toLocaleString()返回一个表示该日期对象的字符串,该字符串与系统设置的地区关联(locality sensitive)。重写了Object.prototype.toLocaleString()方法。

Date.prototype.toLocaleTimeString()返回一个表示该日期对象时间部分的字符串,该字符串格式与系统设置的地区关联(locality sensitive)。

Date.prototype.toSource()返回一个与Date等价的原始字符串对象,你可以使用这个值去生成一个新的对象。重写了?Object.prototype.toSource()这个方法。

Date.prototype.toString()返回一个表示该日期对象的字符串。重写了Object.prototype.toString()方法。

Date.prototype.toTimeString()以更易读格式返回日期对象时间部分的字符串, 形如 “14:39:07 GMT-0600 (PDT)”

Date.prototype.toUTCString()把一个日期对象转换为一个以UTC时区计时的字符串。

Date.prototype.valueOf()返回一个日期对象的原始值。重写了Object.prototype.valueOf()方法。

例子

创建Date对象的几种方法

以下示例显示了创建JavaScript日期对象的几种方法:

注意:由于浏览器的差异和不一致,强烈建议不要使用Date构造函数(和等价的Date.parse方法)解析日期字符串。

代码语言:javascript
复制
var today = new Date();
var birthday = new Date('December 17, 1995 03:24:00');
var birthday = new Date('1995-12-17T03:24:00');
var birthday = new Date(1995, 11, 17);
var birthday = new Date(1995, 11, 17, 3, 24, 0);

0-99的两位数年份 映射到 1900 - 1999年份

应当使用Date.prototype.setFullYear()Date.prototype.getFullYear()方法,来创建和获得 0 到 99 两位数年份之间的日期。

代码语言:javascript
复制
var date = new Date(98, 1); // Sun Feb 01 1998 00:00:00 GMT+0000 (GMT)

//已弃用的方法, 98 也映射到 1998年
date.setYear(98);           // Sun Feb 01 1998 00:00:00 GMT+0000 (GMT)

date.setFullYear(98);       // Sat Feb 01 0098 00:00:00 GMT+0000 (BST)

计算时间差

以下示例显示如何确定两个JavaScript日期之间经过的时间差(以毫秒为单位)。

由于年、月、日(夏令时转换)的不同日期长度,使用大于小时,分钟和秒的单位来表示时间差,可能会需要额外处理一些问题,在尝试之前应该进行彻底的研究。

代码语言:javascript
复制
// using Date objects
var start = Date.now();

// the event to time goes here:
doSomethingForALongTime();
var end = Date.now();
var elapsed = end - start; // elapsed time in milliseconds
代码语言:javascript
复制
// using built-in methods
var start = new Date();

// the event to time goes here:
doSomethingForALongTime();
var end = new Date();
var elapsed = end.getTime() - start.getTime(); // elapsed time in milliseconds
代码语言:javascript
复制
// to test a function and get back its return
function printElapsedTime(fTest) {
  var nStartTime = Date.now(),
      vReturn = fTest(),
      nEndTime = Date.now();

  console.log('Elapsed time: ' + String(nEndTime - nStartTime) + ' milliseconds');
  return vReturn;
}

yourFunctionReturn = printElapsedTime(yourFunction);

注:在支持Web Performance API的高分辨率时间功能的浏览器中,Performance.now()可以提供比Date.now()更可靠和精确的测量时间。

规范

规范版本

状态

评论

ECMAScript最新草案(ECMA-262)该规范中“日期”的定义。

最新标准

?

ECMAScript 2015(第6版,ECMA-262)该规范中“日期”的定义。

标准

?

ECMAScript 5.1(ECMA-262)该规范中“日期”的定义。

标准

?

ECMAScript第一版(ECMA-262)

标准

初始定义 在JavaScript 1.1中实现。

浏览器兼容性

Feature

Chrome

Edge

Firefox

Internet Explorer

Opera

Safari

Basic Support

(Yes)

(Yes)

(Yes)

(Yes)1

(Yes)

(Yes)

Feature

Android

Chrome for Android

Edge mobile

Firefox for Android

IE mobile

Opera Android

iOS Safari

Basic Support

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com