Date对象

摘要:
对它使用new命令,会返回一个Date对象的实例,如果不加参数,实例代表的就是当前时间。Date实例有一个独特的地方,就是它在求值的时候调用的是toString方法。Date.prototype.valueOf()valueOf方法返回实例对象距离时间零点的毫秒数,该方法等同于getTime方法。Date.prototype.toUTCString()toUTCString方法返回对应的UTC时间,也就是比北京时间晚8个小时。Date.prototype.toJSON()toJSON方法返回一个符合JSON格式的ISO日期字符串,与toISOString方法的返回值完全相同。

原文地址: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类方法
<font color=red>Date</font>对象提供了一系列<font color=red>set*</font>方法,用来设置实例对象的哥哥方面。
* <font color=red>setDate(date)</font>:设置实例对象对应的每个月的几号(1-31),返回改变后毫秒时间戳。
* <font color=red>setFullYear(year [, month, date])</font>:设置四位年份。
* <font color=red>setHours(hour [, min, sec, ms])</font>:设置小时(0-23)。
* <font color=red>setMilliseconds(ms)</font>:设置毫秒(0-999)。
* <font color=red>setMinutes(minutes, [, sec, ms])</font>:设置分钟(0-59)。
* <font color=red>setMonth(month [, date])</font>:设置秒(0-59)。
* <font color=red>setSeconds(sec [, ms])</font>:设置秒(0-59)。
* <font color=red>setTime(milliseconds)</font>:设置毫秒时间戳。
没有<font color=red>setDay</font>方法,因为星期几是计算出来的,而不是设置的。
<font color=red>set*</font>系列方法除了<font color=red>setTime()</font>,都有对应的UTC版本,即设置UTC时区的时间。
* <font color=red>setUTCDate()</font>
* <font color=red>setUTCFullYear()</font>
* <font color=red>setUTCHours()</font>
* <font color=red>setUTCMilliseconds()</font>
* <font color=red>setUTCMinutes()</font>
* <font color=red>setUTCMonth()</font>
* <font color=red>setUTCSeconds()</font>

免责声明:文章转载自《Date对象》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇CSS设置文字方向,让文字竖排显示将字符串格式化为csv数据下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

vue 获取时间戳对象转换为日期格式

1. 简单页面 只展示用 <template> <!-- time为时间戳 --> <div>{{time | formatDate}}</div> <!-- 结果为 2018-01-23 18:31:35 --> </template> export d...

new Date():时间的获取和转换

new Date()获取系统当前时间: var currentTime= new Date().getYear();//获取当前年份(2位) var currentTime= new Date().getFullYear();//获取当前完整年分(4位) var currentTime= new Date().getMonth();//获取当前月份(0~1...

js 时间转换毫秒的四种方法(转)

将时间转换为毫秒数的方法有四个: Date.parse()Date.UTCvalueOf()getTime() 1. Date.parse():该方法接受一个表示日期的字符串参数,然后尝试根据这个日期返回日期的毫秒数。ECMA-262没有定义该方法支持哪种日期格式,因此这个方法的行为因为浏览器实现而异。如果传入字符串不能表示日期,那么它会返回NaN。该方法...

oracle系列学习----复杂查询的优化

实验数据和表 create table test1 ( FID NUMBER(6) NOT NULL, FBillNo VARCHAR2(10), FDate DATE DEFAULT to_date(to_char(SYSDATE,'yyyy-mm-dd'),'yyyy-mm-dd') ) create sequence...

解决layui数据表格Date日期格式的回显Object的问题

有属性: private Date createtime; 但是回显的时候,显示{ Object object },想要转换成字符串格式显示。 怎么解决? 首先:数据库中时间的定义:    datetime和timestamp有什么区别? (一)范围不同。 “datetime” 以'YYYY-MM-DD HH:MM:SS'格式检索和显示DATETIME值。...

多功能日历插件:Kalendae

Kalendae 主要功能: 便携无依赖,只需添加js和css。 通过css自定皮肤,方便更换。 支持所有现代浏览器和IE8。 支持一天,多天,或范围选择。 可配置显示几个月。 可作为内嵌部件显示,或通过一个或多个input触发。 可以被附加到任何页面元素,不仅仅是命名元素。 可配置的禁选,通过定义日期数组或一个回调函数。 可配置所选日期的格式。 利用m...