ECMAScript原生JS:Date对象详细参考

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

正文参考MDN做的详细整理,方便我们参考MDN

构造函数:

  1. new Date(); 遵照系统设置的当前几天子来创建一个Date对象。
  2. new Date(value); value代表自1970年七月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 之间的一个整数,表示月份(三月)到11(1五月)。
    day 1 到 31 之间的一个整数,表示某月当中的第几天。
    hour 0 到 23 之间的一个平头,表示时辰。
    minute 0 到 59 之间的一个平头,表示分钟。。
    second 0 到 59 之间的一个整数,秒数。
    millisecond 0 到 999 之间的一个平头,表示时间的毫秒部分的整数值。

假使提供了起码几个参数,另外的参数均会默认设置为1(即便没有提供day参数)或者0。

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

JavaScript的Date对象为跨平台提供了联合的一言一行。时间属性可以在不同的系统中表示同样的随时,而一旦应用了当地时间对象,则展现当地的时刻。

JavaScript
的Date对象提供了数个UTC时间的法门,也呼应提供了地面时间的章程。UTC,也就是我们所说的格林(格林)威治时间,指的是time中的世界时间标准。而本土时间则是指执行JavaScript的客户端电脑所设置的时辰。

以一个函数的花样来调用JavaScript的Date对象(不行使 new
操作符)会回来一个代表当明天子和时间的字符串。而不是一个日期对象。此外,不像另外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作为构造函数调用并传播三个参数时,所定义参数代表的是当地时间。假如需要世界和谐时,使用
new Date({{jsxref(“Date.UTC()”, “Date.UTC(…)”)}}) 和同等参数

属性:

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

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到该日期字符串所代表日期的飞秒数。该措施在按照字符串值设置日期值时很有用,例如组合使用set提姆(Tim)e()方法和 Date() 构造函数。
该措施可以承受符合 RFC2822 / IETF 日期语法 (RFC2822 Section 3.3)
的字符串,如 “Mon, 25 Dec 1995 13:30:00
GMT”。该办法可以领会美利哥次大陆时区的缩写,然则为了更通用,应该采纳时区偏移,如
“Mon, 25 Dec 1995 13:30:00 +0430”
(格林(格林(Green))威治的子午线向东偏移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() 和get米尔iseconds()方法的再次来到值。
参数超出了成立界定,自动调整立异
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.set提姆e(newBigDay.get提姆(Tim)e());

以世界时为标准的章程:

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)。此外同toLocale提姆(Tim)eString()
Date.prototype.toLocaleString()
重临一个意味该日期对象的字符串,该字符串与系统安装的地点关系。覆盖了
Object.prototype.toLocaleString() 方法。其余同toLocale提姆eString()
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.Date提姆eFormat
对象,然后利用该对象 format 属性提供的法门。
Date.prototype.toString()
回到一个意味着该日期对象的字符串,总是回到一个美式马耳他语日期格式的字符串。覆盖了Object.prototype.toString()方法。
Date.prototype.toTimeString()
以人类易读格式重临日期对象时间有些的字符串。
Date.prototype.toUTCString()
把一个日子对象转换为一个以UTC时区计时的字符串。
Date.prototype.valueOf()
回到从1970年8月1日0时0分0秒(UTC,即协调世界时)到该日期对象所表示时间的皮秒数。该办法的效果和
Date.prototype.get提姆e() 方法一致,覆盖了 Object.prototype.valueOf()方法。