Date对象

Posted

tags:

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

原文地址:https://wangdoc.com/javascript/

普通函数的用法

Date对象可以作为普通函数直接调用,返回一个代表当前时间的字符串,即使带有参数Date作为普通函数使用时,返回的还是当前时间。

Date() // "Wed Dec 05 2018 17:12:15 GMT+0800 (中国标准时间)"
Date(2000, 1, 1) // "Wed Dec 05 2018 17:13:00 GMT+0800 (中国标准时间)"

构造函数的用法

Date还可以当作构造函数使用。对它使用new命令,会返回一个Date对象的实例,如果不加参数,实例代表的就是当前时间。Date实例有一个独特的地方,就是它在求值的时候调用的是toString方法。这导致对Date实例求值,返回的是一个字符串。
作为构造函数时,Date对象可以接受多种格式的参数,返回一个该参数对应的时间实例。

// 参数为时间零点开始计算的毫秒数
new Date(1378218728000);

// 参数为日期字符串
new Date("January 6, 2018");

// 参数为多个整数
// 代表年、月、日、小时、分钟、秒、毫秒
new Date(2018, 0, 1, 0, 0, 0, 0);

关于Date构造函数的参数,有几点说明。
第一点,参数可以是负整数,代表1970年元旦之前的时间。
第二点,只要是能被Date.parse方法解析的字符串,都可以当做参数。
第三点,参数为年月日等多个整数时,年和月不能省略,其他的参数都可以省略。
* 年:使用四位数年份,比如2000。如果写成两位数或个位数,则加上1900。如果是负数,表示公元前。
* 月:0表示一月,依此类推。
* 日:131
* 小时:023/font>。
* 分钟:059
* 秒:059
* 毫秒:0999
这些参数如果超出了正常范围,会被自动折算。比如,如果月设置为15,就折算为下一年的4月。参数还可以使用负数,表示扣去的时间。

日期的运算

两个日期实例对象进行减法运算时,返回的是他们间隔的毫秒数;进行加法运算时,返回的是两个字符串连接而成的新字符串。(参考对象的加减)

静态方法

Date.now()

Date.now方法返回当前时间距离时间零点(1970年1月1日00:00:00 UTC)的毫秒数,相当于Unix时间戳乘以1000。

Date.parse()

Date.parse方法用来解析日期字符串,返回该时间距离时间零点的毫秒数。日期字符串应该复合RFC 2822和ISO 8061这两个标准,即YYYY-MM-DDTHH:mm:ss.sssZ格式,其中最后的z表示时区。但是其他格式也可以被解析。
如果解析失败,返回NaN

Date.UTC()

Date.UTC方法接受年、月、日等变量作为参数,返回该时间距离时间零点的毫秒数。
该方法的参数与Date构造函数完全一致。区别在于Date.UTC方法的参数,会被解释为UTC时间(世界标准时间),Date构造函数的参数会被解释为当前时区的时间。

实例方法

Date的实例对象有几十个自己的方法,除了valueOftoString,可以分为以下三类。

  • to类:从Date对象返回一个字符串,表示指定的时间。
  • get类:获取Date对象的日期和时间。
  • set类:设置Date对象的日期和时间。

    Date.prototype.valueOf()

    valueOf方法返回实例对象距离时间零点的毫秒数,该方法等同于getTime方法。

    to类方法

    Date.prototype.toString()

    toString返回一个完整的日期字符串。

    Date.prototype.toUTCString()

    toUTCString方法返回对应的UTC时间,也就是比北京时间晚8个小时。
var d = new Date(2018, 0, 1);
d.toUTCString(); // "Sun, 31 Dec 2017 16:00:00 GMT"

Date.prototype.toISOString()

toISOString方法返回对应时间的ISO8601写法,注意,toISOString方法返回的总是UTC时区的时间

Date.prototype.toJSON()

toJSON方法返回一个符合JSON格式的ISO日期字符串,与toISOString方法的返回值完全相同。

Date.prototype.toDateString(),Date.prototype.toTimeString()

toDateString方法返回日期字符串(不包含时分秒)。
toTimeString方法返回时间字符串(不包含年月日)。

本地时间

以下三个方法,可以将Date实例转为表示本地时间的字符串。

  • Date.prototype.toLocaleString():完整的本地时间。
  • Date.prototype.toLocaleDateString():本地日期。
  • Date.prototype.toLocaleTimeString():本地时间。
这三个方法都有两个可选参数。

dateObj.toLocaleString([locales[, options]])
dateObj.toLocaleDateString([locales[, options]])
dateObj.toLocaleTimeString([locales[, options]])

这两个参数中,<font color=red>locales</font>是一个指定所用语言的字符串,<font color=red>options</font>是一个配置对象。下面是<font color=red>locales</font>的例子。

var d = new Date(2013, 0, 1);

d.toLocaleString("en-US"); // "1/1/2013, 12:00:00 AM"
d.toLocaleString("zh-CN"); // "2013/1/1 上午12:00:00"

下面是<font color=red>options</font>的例子。

var d = new Date(2013, 0, 1);
// 时间格式
// 下面的设置是,星期和月份为完整文字,年份和日期为数字
d.toLocaleDateString("en-US", {
weekday: "long",
year: "numeric",
month: "long",
day: "numeric"
}); // "Tuesday, January 1, 2013"
// 指定时区
d.toLocaleTimeString("en-US", {
timeZone: "UTC",
timeZoneName: "short"
}); // "4:00:00 PM UTC"

d.toLocaleTimeString("en-US", {
timeZone: "Asia/shanghai",
timeZoneName: "long"
});

d.toLocaleTimeString("en-US", {
hour12: false
});
d.toLocaleTimeString("en-US", {
hour12: true
});

### get类方法
<font color=red>Date</font>对象提供了一系列<font color=red>get*</font>方法,用来获取实例对象某个方面的值。
* <font color=red>getTime()</font>:返回实例距离1970年1月1日00:00:00的毫秒数,等同于<font color=red>valueOf</font>方法。
* <font color=red>getDate()</font>:返回实例对象对应每个月的几号(从1开始)。
* <font color=red>getDay()</font>:返回星期几,星期日为0,星期一为1,依此类推。
* <font color=red>getFullYear()</font>:返回四位的年份。
* <font color=red>getMonth()</font>:返回月份(0表示1月,11表示12月)。
* <font color=red>getHours()</font>:返回小时(0-23)。
* <font color=red>getMilliseconds()</font>:返回毫秒(0-999)。
* <font color=red>getMinutes()</font>:返回分钟(0-59)。
* <font color=red>getSeconds()</font>:返回秒(0-59)。
* <font color=red>getTimezoneOffset()</font>:返回当前时间与UTC的时区差异,以分钟表示,返回结果考虑到了夏令时因素。
所有这些<font color=red>get*</font>方法返回的都是整数,不同方法返回值的范围不一样。
上面这些<font color=red>get*</font>方法返回的都是当前时区的时间,<font color=red>Date</font>对象还提供了这些方法对应的UTC版本,来返回UTC时间。
* <font color=red>getUTCDate()</font>
* <font color=red>getUTCFullYear()</font>
* <font color=red>getUTCMonth()</font>
* <font color=red>getUTCDay</font>
* <font color=red>getUTCHours()</font>
* <font color=red>getUTCMinutes()</font>
* <font color=red>getUTCSeconds()</font>
* <font color=red>getUTCMilliseconds()</font>

var d = new Date("January 6, 2013");
d.getDate() // 6
d.getUTCDate() // 5
```

set类方法

Date对象提供了一系列set*方法,用来设置实例对象的哥哥方面。

  • setDate(date):设置实例对象对应的每个月的几号(1-31),返回改变后毫秒时间戳。
  • setFullYear(year [, month, date]):设置四位年份。
  • setHours(hour [, min, sec, ms]):设置小时(0-23)。
  • setMilliseconds(ms):设置毫秒(0-999)。
  • setMinutes(minutes, [, sec, ms]):设置分钟(0-59)。
  • setMonth(month [, date]):设置秒(0-59)。
  • setSeconds(sec [, ms]):设置秒(0-59)。
  • setTime(milliseconds):设置毫秒时间戳。
    没有setDay方法,因为星期几是计算出来的,而不是设置的。
    set*系列方法除了setTime(),都有对应的UTC版本,即设置UTC时区的时间。
  • setUTCDate()
  • setUTCFullYear()
  • setUTCHours()
  • setUTCMilliseconds()
  • setUTCMinutes()
  • setUTCMonth()
  • setUTCSeconds()

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

java 反射代码片段

shell 脚本 片段

VSCode自定义代码片段12——JavaScript的Promise对象

VSCode自定义代码片段12——JavaScript的Promise对象

VSCode自定义代码片段——JS中的面向对象编程

VSCode自定义代码片段9——JS中的面向对象编程