JavaScript Date(日期)对象

Posted 牛译伟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript Date(日期)对象相关的知识,希望对你有一定的参考价值。

一、Date类型简介

Date对象在JS中用于处理时间和日期。

ECMAScript 中的 Date类型是早期在 Java 中的 java.util.Date 类基础上创建的。因此,Date 类型使用来自UTCCoordinated Universal Time国际协调时间)1970年 1月 1日午夜(零时)开始经过的毫秒数来保存日期。在这种数据存储格式条件下,Date 类型保存的日期都可以精确到 1970年 1月 1日之前或是之后的 100 000 000天。

关于日期和时间的基本的基本知识:

UTC是什么?

  协调世界时间Coordinated Universal  Time)又称世界统一时间、世界标准时间、国际协调时间)协调世界时是以原子时秒长为基础的,在时刻上尽量接近于 世界时的一种时间计量系统。

这套时间系统被应用于许多互联网和万维网的标准中。例如,网络时间协议 就是 协调世界时 在互联网中使用的一种方式。

在军事中,协调世界时区会使用 ‘Z’来表示。又由于 Z 在无线电联络中使用的是 ‘Zulu’ 作代称,协调世界时也会被称为 ‘Zulu time’

中国大陆、中国香港、中国澳门、中国台湾、蒙古国、新加坡、马来西亚、菲律宾、西澳大利亚州的时间与 UTC的时差均为 +8,也就是 UTC+8;


 

二、创建Date对象

创建一个 日期对象,使用 new操作符和 Date构造函数即可

例如:var now = new Date();

自动获得当前的日期和时间

在调用 Date 构造函数而不传递参数的情况下,新创建的对象自动获得当前当前代码执行的日期和时间。

 

根据特定的日期和时间创建日期对象。

需要在构造函数中传递一个表示时间的字符串作为参数。

new Date()

日期的格式:月份/日/年 时:分:秒

必须传入表示该日期的毫秒数(即从UTC时间 1970年 1月 1日午夜起至该日期止所经过的毫秒数)。

 

三、方法

JS中提供了三个方法:Date.parse() 、 Date.UTC() 以及 Date.now()

(一)Date.parse() 方法

Date.parse() 方法接收一个表示日期的字符串作为参数,然后尝试根据这个字符串返回相应的日期毫秒数。

JS中没有定义 Date.parse() 方法应该支持哪种日格式,因此这个方法的行为因实现而异。将地区设置为美国的浏览器通常都接受以下日期格式。

1、"月/日/年",例如 12/6/2019;

2、"英文月名 日,年",例如 January 12,2019;

3、"英文星期几 英文月名 日 年 时:分:秒:时区",例如 Tue May 25 2010 00:00:00 GMT-0700

例如:

var newDate = new Date(Date.parse(\'May 25,2019\'));
console.log(newDate);

 如果传入Date.parse() 方法的字符串不能表示日期,那么将会返回 NaN。

实际上,如果直接将表示日期的字符串传递给 Date 构造函数,也会在后台调用 Date.parse() 。换句话说,这行代码和上面的例子是等价的;

这行代码将会得到与前面相同的日期对象。

var newDate = new Date(\'May 25 , 2019\');

 注意:

日期对象及其在不同的浏览器会有不同的表现行为,如果超出了有效日期(12个月/一月最多31天/),例如firefox浏览器就会返回 Invalid Date(无效日期)

 

(二)Date.UTC()方法

Date.UTC() 方法同样也返回日期的毫秒数,但是它与 Date.parse在构建值的时候使用不同的信息。

Date.UTC() 的参数分别是年份、基于0的月份(一月是1,二月是2…)、月中的哪一天(1~31)、小时数(0~23)、分钟、秒以及毫秒数。

在这些参数中,中有前面两个(年和月)是必填的。如果没有提供月中的天数,就假设天数为 1;如果是其他参数,则统统假设为0。

实例:

GMT时间 2000年 1月1日午夜0时

var newDate = new Date(Date.UTC(2019,0));
console.log(newDate);

创建了一个日期对象,这个对象表示 GET时间2019年1月1日午夜0时,传入的第一个值表示年份的 2000,一个是表示月份的 0(即1月份),因为其他参数是自动填充的。

 

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

 

三、日期格式化方法

Date 类型还有一些专门用于将日期格式转化为字符串的方法,方法如下:

1、toDateString()   :以特定于实现的格式显示星期几、月、日、年;

2、toTimeString()  :以特定于实现的格式显示时、分、秒、时区

3、toLocaleDateString()   :以特定于地区的格式显示星期几、月、日、年;

4、toLocaleTimeString()  :以特定于地区的格式显示时、分、秒

5、toUTCString()  :以特定于实现的格式显示UTC日期

  与toLocaleString() 和 toString() 方法一样,以上这些字符串格式方法的输出也是因浏览器而异的,因此没有哪一个方法能狗用来在用户界面中显示一致的日期信息。

 

四、日期/时间组件

Date.prototype 方法

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.getUTCDate()

  根据世界时返回特定日期对象一个月的第几天(1-31).

Date.prototype.getUTCDay()

  根据世界时返回特定日期对象一个星期的第几天(0-6).

Date.prototype.getUTCFullYear()

  根据世界时返回特定日期对象所在的年份(4位数).

Date.prototype.getUTCHours()

  根据世界时返回特定日期对象当前的小时(0-23).

Date.prototype.getUTCMilliseconds()

  根据世界时返回特定日期对象的毫秒数(0-999).

Date.prototype.getUTCMinutes()

  根据世界时返回特定日期对象的分钟数(0-59).

Date.prototype.getUTCMonth()

  根据世界时返回特定日期对象的月份(0-11).

Date.prototype.getUTCSeconds()

  根据世界时返回特定日期对象的秒数(0-59).

Date.prototype.getYear()

  根据特定日期返回年份 (通常 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()

  以人类易读(human-readable)的形式返回该日期对象日期部分的字符串。

Date.prototype.toISOString()

  把一个日期转换为符合 ISO 8601 扩展格式的字符串。

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()

  以人类易读格式返回日期对象时间部分的字符串。

Date.prototype.toUTCString()

  把一个日期对象转换为一个以UTC时区计时的字符串。

Date.prototype.valueOf()

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

 

以上是关于JavaScript Date(日期)对象的主要内容,如果未能解决你的问题,请参考以下文章

javascript高级教程JavaScript Date(日期) 对象

谈谈javascript中的日期Date对象

JavaScript Date日期对象以及日期格式化方法

javascript Date(日期)对象

36.一文讲透JavaScript日期对象Date,时间戳1970date方法date计算

JavaScript Date(日期)对象