引用类型-Date
Date类型
ECMAscript中的Date类型是在早起java.util.Date基础上构建的。Date类型使用UCT(国际协调时间)1970年1月1日零时开始经过的毫秒数来保存日期。在这种数据储存格式的条件下,Date类型保存的日期能够精确到1970年1月1日零时前后的一亿年。
使用构造函数创建当前的时间日期
在不传递参数的情况下自动获取当前的日期和时间。
var now = new Date(); console.log(now); //Sun Feb 19 2017 12:10:40 GMT+0800 (中国标准时间)
如果将构造函数当作普通函数使用。
var now1 = Date(); var now2 = Date(6/13/2007); console.log(now1); console.log(now2); //不使用new创建的时间对象跟new没有什么不同,只不过是传递参数无效。
使用构造函数创建指定的时间日期
如果要创建指定的时间和日期,就需要传递从1970年1月1日到创建指定日期的毫秒数。这样让人头皮发麻。
参数可以接收unix时间戳,这个时间戳的单位为秒,所以要在乘以1000。
var old = new Date(3600 * 24 * 1000); //一小时有3600秒,一天有24小时,在乘以1000,转换成毫秒 console.log(old); //Fri Jan 02 1970 08:00:00 GMT+0800 (中国标准时间) //这个表示的是1970年1月2日零时,但是为什么是08:00:00,因为中国与UTC时差为8,就是UTC+8
别忘了Date对象可以表示19701月1日0时前后一亿年,所以参数可以是负数。
var old = new Date(-3600 * 24 * 1000); console.log(old); //Wed Dec 31 1969 08:00:00 GMT+0800 (中国标准时间),前一日时区问题+8
所以ECMAScript提供了两个方法,Date.parse()和Date.UTC()。
十二个月的 英文表示:January、February、March、April、May、june、August、September、October、November、December
七个星期的英文表示:Monday、Tuseday、Wednesday、Thursday、Friday、Saturday、Sunday
Date.parse()方法接受一个表示日期的字符串参数,根据这个字符串返回日期的毫秒数。
var now = new Date(Date.parse('February 19, 2017')); console.log(now);
var now = new Date(Date.parse('2/19/2017')); console.log(now);
注意:如果Date.parse()方法传递的字符串不能表示日期,那么他会返回NaN。
var now = new Date(Data.parse('this is a string')); console.log(now); //Invalid Date(无效日期)
其实如果给构造函数传递表示日期的字符串,后台会自动调用Date.parse()方法。
var now = new Date('2/19/2017'); console.log(now); //等价于 var now = new Date(Date.parse('2/19/2017'));
Date.UTC()方法,同样也返回的表示日期的毫秒数。只不过与Date.parse()方法的参数不同,也不是字符串。
Date.UTC()方法,接收的参数分别是年份,基于0的月份,月中的那一天,小时数(0-23),分,秒,毫秒。这些参数只有前两个参数是必须的,如果其它参数没有写,那么月中的那一天默认为1,其余均为0。
var now = new Date(Date.UTC(2017, 1, 19, 15, 43)); console.log(now); //Sun Feb 19 2017 23:43:00 GMT+0800 因为时区问题会加8
Date.UTC()方法和Date.parse()方法一样,构造函数传递相应的方法会在后台自动调用,只不过日期和时间都是基于本地时区而非GMT来创建的。
日期的计算
如果日期转换为数值则为毫秒数,如果转换为字符串则为日期的字符串。日期的减法操作是毫秒数的相减,日期的相加是字符串的拼贴。
var old = new Date(2017, 2, 18); var now = new Date(2017, 2, 19); console.log(now - old); console.log(now + old);
Date对象的静态方法即构造函数上的方法,之前的Date.parse()和Date.UTC()都属于此类方法
Date.now()这个方法是ECMAScript5中新增的方法,返回调用这个方法时日期和时间的毫秒数
var star = Date.now(); //调用一些函数 var stop = Date.now(); var result = stop - star;
如果浏览器不支持这个方法可以使用+操作符获取Date对象的时间戳
var star = +new Date(); //调用一些函数 var stop = +new Date(); var result = stop - star; alert(result);
Date对象的valueOf()、toString()、toLocaleString()方法
toLocaleString()方法会按照浏览器设置地区相适应的格式返回日期和时间,时间格式会包含am、pm,但是不会包含时区信息(根据浏览器的不同格式也会不同)
var now = new Date(); var result = now.toLocaleString(); console.log(now); //Sun Feb 19 2017 19:29:27 GMT+0800 (中国标准时间) console.log(result); //2017/2/19 下午7:29:27
toString()方法,通常返回带有时区信息的日期和时间,一般以军用时间来表示(0-23)。
var now = new Date(); var result = now.toString(); console.log(now); //Sun Feb 19 2017 19:31:37 GMT+0800 (中国标准时间) console.log(result); //Sun Feb 19 2017 19:31:37 GMT+0800 (中国标准时间) //这里返回的结果相同,但是前者是object、后者是string
valueOf()方法,返回时间日期的毫秒数,是unmber类型。
var now = new Date(); var result = now.valueOf(); console.log(now); //Sun Feb 19 2017 19:35:08 GMT+0800 (中国标准时间) console.log(result); //1487504108647
Date对象有一个等价valoeOf()方法的方法。getTime()方法,同样返回表示日期的毫秒数。
var now = new Date(); var result = now.getTime(); console.log(result);
通过valueOf()方法和getTime()方法可以取代Date.now()方法,或者使用+运算符获取对象的时间戳。
var star = new Date(); // 执行一些函数 var stop = new Date(); var result = stop.valueOf() - star.valueOf(); var result = stop.getTime() - star.getTime();
日期格式化方法,这些方法都是将日期格式化为字符串的方法
toUTCString()方法,返回特定的UTC时间,比北京时间晚8小时。
toiSOString()方法,方法返回对应时间的ISO8601写法, UTC时区。
toJSON()方法,和toiSOSString()方法相同。
toDateString(),以特定个是现实星期几,月,日,年。
toTimeString(),以特定格式显示时,分,秒和时区。
toLocaleDateString(),以特定地区的格式显示星期几,月,日,年。
toLocaleTimeString(),以特定地区的格式显示时,分,秒,和时区。
get方法,用于获取时间信息
getTime()方法,获取距离1970年1月1日0时的毫秒数,等同于valueOf()方法。
getDate()方法,获取每个月的几号。
getDay()方法,获取星期,星期日为0。
getYear()方法,获取距离1900的年数。
getFullYear()方法,获取四位数年份(在获取年份的时候推荐用这个方法)
getMonth()方法,获取月份,0表示一月。
getHours()方法,获取小时(0-23)。
getMinutes()方法,获取分钟数。
getSeconds()方法,获取秒数。
getMilliseconds()方法,获取毫秒数。
getTimezoneOffset(),返回本地时间和UCT时间相差的分钟数。

浙公网安备 33010602011771号