原生JS:Date对象详细参考

Date对象:基于1970年1月1日(世界标准时间)起的毫秒数

本文参考MDN作的详细整理,方便你们参考MDN浏览器

构造函数:

  1. new Date(); 依据系统设置的当前时间来建立一个Date对象。
  2. new Date(value); value表明自1970年1月1日00:00:00 (世界标准时间) 起通过的毫秒数。
  3. new Date(dateString); dateString表示日期的字符串值。该字符串应该能被 Date.parse() 方法识别(符合 IETF-compliant RFC 2822 timestamps 或 version of ISO8601)
  4. new Date(year, month[, day[, hour[, minutes[, seconds[, milliseconds]]]]]);
    year 1900 年后的某一年份,表明年份的整数值。为了不2000年问题最好指定4位数的年份; 使用 1998, 而不要用 98.
    month 0 到 11 之间的一个整数,表示月份(1月)到11(12月)。
    day 1 到 31 之间的一个整数,表示某月当中的第几天。
    hour 0 到 23 之间的一个整数,表示小时。
    minute 0 到 59 之间的一个整数,表示分钟。。
    second 0 到 59 之间的一个整数,秒数。
    millisecond 0 到 999 之间的一个整数,表示时间的毫秒部分的整数值。

若是提供了至少两个参数,其他的参数均会默认设置为1(若是没有提供day参数)或者0。函数

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

JavaScript的Date对象为跨平台提供了统一的行为。时间属性能够在不一样的系统中表示相同的时刻,而若是使用了本地时间对象,则反映当地的时间。prototype

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

以一个函数的形式来调用JavaScript的Date对象(不使用 new 操做符)会返回一个表明当前日期和时间的字符串。而不是一个日期对象。另外,不像其余JavaScript 类型,Date 对象没有字面量格式。orm

当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做为构造函数调用并传入多个参数时,所定义参数表明的是当地时间。若是须要世界协调时,使用 new Date({{jsxref("Date.UTC()", "Date.UTC(...)")}}) 和相同参数ip

属性:

Date.prototype :容许为 Date 实例对象添加属性。
Date.length:值是 7。这是该构造函数可接受的参数个数。jsx

Date静态方法:

Date.now() IE9

返回自 1970-1-1 00:00:00 UTC (时间标准时间)至今所通过的毫秒数,类型为Number。
在支持 Web Performance API 的高精细度(high-resolution)时间功能的浏览器中,window.performance.now 提供的所通过的时间比 Date.now 更可靠和精确。
兼容旧版浏览器:字符串

if (!Date.now) {
  Date.now = function now() {
    return new Date().getTime();
  };
}
Date.parse()

解析一个表示日期的字符串,并返回从 1970-1-1 00:00:00 所通过的毫秒数。若是参数不能解析为一个有效的日期,则返回NaN。
parse 方法接受一个日期字符串(例如 "Dec 25, 1995"),并返回从1970-1-1 00:00:00 UTC到该日期字符串所表示日期的毫秒数。该方法在基于字符串值设置日期值时颇有用,例如结合使用setTime() 方法和 Date() 构造函数。
该方法能够接受符合 RFC2822 / IETF 日期语法 (RFC2822 Section 3.3) 的字符串,如 "Mon, 25 Dec 1995 13:30:00 GMT"。该方法可以理解美国大陆时区的缩写,可是为了更通用,应该使用时区偏移,如 "Mon, 25 Dec 1995 13:30:00 +0430" (格林威治的子午线向东偏移4小时30分钟)。若是没有指定时区,默认使用本地时区。
GMT 和 UTC 被看做相等。 若是 RFC2822 Section 3.3 格式中不包含时区信息时,会以本地时区来解析日期字符串。
因为在解析日期字符串时存在误差会致使结果不一致,所以推荐始终手动解析日期字符串,特别是不一样的ECMAScript实现会把诸如“2015-10-12 12:00:00”的字符串解析为NaN,UTC或者本地时间。
另外,日期时间字符串也可使用 ISO 8601 格式。例如,"2011-10-10" (仅日期)或 "2011-10-10T14:48:00" (日期和时间)可以做为参数被传递和解析

Date.UTC()

接受和构造函数最长形式的参数相同的参数(从2到7),并返回从 1970-01-01 00:00:00 UTC 开始所通过的毫秒数,类型为Number。
你应该指定一个完整格式的年份,如 1998
Date.UTC 方法使用协调世界时 代替 本地时间。
Date.UTC 方法返回一个时间数值,而不是一个日期对象。
若是有一个指定的参数超出其合理范围,则 UTC 方法会经过更新其余参数直到该参数在合理范围内。例如,为月份指定 15,则年份将会加 1,而后月份将会使用 3。

Date 实例方法:

根据本地时间的方法
获取时间方法:

Date.prototype.getDate()
根据本地时间返回指定日期对象的月份中的第几天(1-31)。
Date.prototype.getDay()
根据本地时间返回指定日期对象的星期中的第几天(0-6)。
Date.prototype.getFullYear()
根据本地时间返回指定日期对象的年份,该方法返回一个1000 到 9999的四位数字年份,请使用该方法代替 getYear 方法。
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(协调世界时)到该日期通过的毫秒数,Number类型,对于1970-1-1 00:00:00 UTC以前的时间返回负值。这个方法的功能和 valueOf() 方法同样。
Date.prototype.getTimezoneOffset()
返回协调世界时(UTC)相对于当前时区的时间差值,单位为分钟。
时区误差(time-zone offset)表示协调世界时(UTC)与本地时区之间的差值,单位为分钟。须要注意的是若是本地时区晚于协调世界时,则该差值为正值,若是早于协调世界时则为负值

设置时间方法:如下方法若是有一个参数超出了合理的范围,该方法会更新其余参数值,日期对象的日期值也会被相应更新

Date.prototype.setDate(value)
根据本地时间为指定的日期对象设置月份中的第几天。
若是 value 超出了月份的合理范围,setDate 将会相应地更新 Date 对象。例如,若是为 value 指定0,那么日期就会被设置为上个月的最后一天,能够为负数。
Date.prototype.setFullYear(yearValue[, monthValue[, dayValue]])
根据本地时间为指定日期对象设置完全年份(四位数年份是四个数字)。
yearValue指定年份的整数值,例如1995。
monthValue一个0到11之间的整数值,表示从一月到十二月。
dayValue一个1到31之间的整数值,表示月份中的第几天。若是你指定了 dayValue 参数,就必须同时指定 monthValue。
若是没有指定 monthValue 和dayValue 参数,将会使用 getMonth 和getDate 方法的返回值
Date.prototype.setHours(hoursValue[, minutesValue[, secondsValue[, msValue]]])
根据本地时间为指定日期对象设置小时数。若是不指定 minutesValue,secondsValue 和 msValue 参数,则会使用getMinutes(),getSeconds() 和getMilliseconds() 方法的返回值。
参数超出了合理范围,自动调整更新
Date.prototype.setMilliseconds()
根据本地时间为指定日期对象设置毫秒数。
Date.prototype.setMinutes()
根据本地时间为指定日期对象设置分钟数。
Date.prototype.setMonth()
根据本地时间为指定日期对象设置月份。
Date.prototype.setSeconds()
根据本地时间为指定日期对象设置秒数。
Date.prototype.setTime(timeValue)
经过指定从 1970-1-1 00:00:00 UTC 开始通过的毫秒数来设置日期对象的时间,对于早于 1970-1-1 00:00:00 UTC的时间可以使用负值。例:sameBigDay.setTime(newBigDay.getTime());

以世界时为标准的方法:

Date.prototype.getUTCDate()
以世界时为标准,返回一个指定的日期对象是一个月中的第几天,返回 1 到 31 的整数值
Date.prototype.getUTCDay()
以世界时为标准,返回一个指定的日期对象为一星期中的第几天,其中 0 表明星期天。
Date.prototype.getUTCFullYear()
以世界时为标准,返回一个指定的日期对象的年份,该方法返回一个1000 到 9999的四位数字年份
Date.prototype.getUTCHours()
以世界时为标准,返回一个指定的日期对象的小时数。
Date.prototype.getUTCMilliseconds()
以世界时为标准,返回一个指定的日期对象的毫秒数。.
Date.prototype.getUTCMinutes()
以世界时为标准,返回一个指定的日期对象的分钟数.
Date.prototype.getUTCMonth()
以世界时为标准,返回一个指定的日期对象的月份,它是从 0 开始计数的(0 表明一年的第一个月).
Date.prototype.getUTCSeconds()
以世界时为标准,返回一个指定的日期对象的秒数.
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.toDateString() 以人类易读(human-readable)的形式返回该日期对象日期部分的字符串。 Date.prototype.toISOString() IE9 返回一个 ISO(ISO 8601 Extended Format)格式的字符串: YYYY-MM-DDTHH:mm:ss.sssZ。时区老是UTC(协调世界时),加一个后缀“Z”标识 Date.prototype.toJSON() 返回一个 JSON 格式字符串(使用 toISOString()),表示该日期对象的值。默认状况下,这个方法经常使用于 JSON序列化Date对象。。为了在 JSON.stringify() 方法中使用。 Date.prototype.toLocaleDateString() 返回一个表示该日期对象日期部分的字符串,该字符串格式与系统设置的地区关联(locality sensitive)。其它同toLocaleTimeString() Date.prototype.toLocaleString() 返回一个表示该日期对象的字符串,该字符串与系统设置的地区关联。覆盖了 Object.prototype.toLocaleString() 方法。其它同toLocaleTimeString() Date.prototype.toLocaleTimeString([locales [, options]]) 返回一个表示该日期对象时间部分的字符串,该字符串格式与系统设置的地区关联(locality sensitive)。 方法返回该日期对象日期部分的字符串,该字符串格式因不一样语言而不一样。新增的参数(IE11,而Safari无) locales 和 options 使程序可以指定使用哪一种语言格式化规则,容许定制该方法的表现(behavior)。在旧版本浏览器中, locales 和 options 参数被忽略,使用的语言环境和返回的字符串格式是各自独立实现的 查看浏览器兼容性小节,看下哪些浏览器支持 locales 和 options 参数,还能够参看例子: 检测 locales 和 options 参数支持状况。 没有指定语言环境(locale)时,返回一个使用默认语言环境和格式设置(options)的格式化字符串。 locales 和 options 参数不是全部的浏览器都支持。为了检测一种实现环境(implementation)是否支持它们,可使用不合法的语言标签,若是实现环境支持该参数,则会抛出一个 RangeError 异常,反之会忽略参数。 性能:当格式化大量日期时,最好建立一个 Intl.DateTimeFormat 对象,而后使用该对象 format 属性提供的方法。 Date.prototype.toString() 返回一个表示该日期对象的字符串,老是返回一个美式英语日期格式的字符串。覆盖了Object.prototype.toString() 方法。 Date.prototype.toTimeString() 以人类易读格式返回日期对象时间部分的字符串。 Date.prototype.toUTCString() 把一个日期对象转换为一个以UTC时区计时的字符串。 Date.prototype.valueOf() 返回从1970年1月1日0时0分0秒(UTC,即协调世界时)到该日期对象所表明时间的毫秒数。该方法的功能和 Date.prototype.getTime() 方法同样,覆盖了 Object.prototype.valueOf() 方法。

相关文章
相关标签/搜索