原生JS:Date对象全面解析


Posted in Javascript onSeptember 06, 2016

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对象为跨平台提供了统一的行为。时间属性可以在不同的系统中表示相同的时刻,而如果使用了本地时间对象,则反映当地的时间。

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到该日期字符串所表示日期的毫秒数。该方法在基于字符串值设置日期值时很有用,例如结合使用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() 方法。

以上这篇原生JS:Date对象全面解析就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery-ui中自动完成实现方法
Jun 10 Javascript
基于Unit PNG Fix.js有时候在ie6下不正常的解决办法
Jun 26 Javascript
jquery实现兼容IE8的异步上传文件
Jun 15 Javascript
js+css实现的圆角边框TAB选项卡滑动门代码分享(2款)
Aug 26 Javascript
Web安全测试之XSS实例讲解
Aug 15 Javascript
移动端脚本框架Hammer.js
Dec 15 Javascript
详解基于angular路由的requireJs按需加载js
Jan 20 Javascript
jQuery仿IOS弹出框插件
Feb 18 Javascript
微信小程序 setData使用方法及常用错误解决办法
May 11 Javascript
深入理解Vue 单向数据流的原理
Nov 09 Javascript
关于在vue 中使用百度ueEditor编辑器的方法实例代码
Sep 14 Javascript
使用 JavaScript 创建并下载文件(模拟点击)
Oct 25 Javascript
如何解决IONIC页面底部被遮住无法向上滚动问题
Sep 06 #Javascript
Vue.js每天必学之过渡与动画
Sep 06 #Javascript
Vue.js 父子组件通讯开发实例
Sep 06 #Javascript
Vuejs第十篇之vuejs父子组件通信
Sep 06 #Javascript
Vue.js每天必学之方法与事件处理器
Sep 06 #Javascript
基于JavaScript实现购物网站商品放大镜效果
Sep 06 #Javascript
AngularGauge 属性解析详解
Sep 06 #Javascript
You might like
用PHP和ACCESS写聊天室(九)
2006/10/09 PHP
Dedecms常用函数解析
2008/02/01 PHP
PHP文章采集URL补全函数(FormatUrl)
2012/08/02 PHP
JS启动应用程序的一个简单例子
2008/05/11 Javascript
JS中不为人知的五种声明Number的方式简要概述
2013/02/22 Javascript
js 图片随机不定向浮动的实现代码
2013/07/02 Javascript
js闭包的用途详解
2014/11/09 Javascript
window.onload与$(document).ready()的区别分析
2015/05/30 Javascript
JavaScript 数组中最大最小值
2016/06/05 Javascript
3kb jQuery代码搞定各种树形选择的实现方法
2016/06/10 Javascript
javascript类型系统_正则表达式RegExp类型详解
2016/06/24 Javascript
基于jQuery的checkbox全选问题分析
2016/11/18 Javascript
基于JavaScript实现百度搜索框效果
2020/06/28 Javascript
jquery.uploadView 实现图片预览上传功能
2017/08/10 jQuery
JS实现json对象数组按对象属性排序操作示例
2018/05/18 Javascript
[53:13]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS LGD-GAMING
2014/05/22 DOTA
使用Python生成url短链接的方法
2015/05/04 Python
每天迁移MySQL历史数据到历史库Python脚本
2018/04/13 Python
pycharm使用matplotlib.pyplot不显示图形的解决方法
2018/10/28 Python
Python使用sax模块解析XML文件示例
2019/04/04 Python
django富文本编辑器的实现示例
2019/04/10 Python
基于python实现百度翻译功能
2019/05/09 Python
css3 利用transform打造走动的2D时钟
2020/10/20 HTML / CSS
使用html2canvas.js实现页面截图并显示或上传的示例代码
2018/12/18 HTML / CSS
芬兰灯具网上商店:Nettilamppu.fi
2018/06/30 全球购物
意大利顶级奢侈品电商:LUISAVIAROMA(支持中文)
2020/05/26 全球购物
网上开店必备创业计划书
2014/01/26 职场文书
欢迎标语大全
2014/06/21 职场文书
临床医学专业求职信
2014/08/08 职场文书
爱的奉献演讲稿
2014/09/10 职场文书
档案接收函格式
2015/01/30 职场文书
经典搞笑版检讨书
2015/02/19 职场文书
银行文明优质服务培训心得体会
2016/01/09 职场文书
《爬天都峰》教学反思
2016/02/23 职场文书
python使用tkinter实现透明窗体上绘制随机出现的小球(实例代码)
2021/05/17 Python
Spring JPA 增加字段执行异常问题及解决
2022/06/10 Java/Android