Javascript(笔记29) - 日期对象
Date()
系统提供好的构造函数,new 一个就能生成日期对象;
var date = new Date()
控制台:
Date对象属性
constructor
返回创建此对象的函数的引用;
prototype
原型是构造函数上的属性
Date对象get方法
是用 Date() 构造函数,构造出来的对象的一些方法;
创建的对象,只反映新建时刻的,年月日时分秒;
get 系列方法是获得时间
当前对象使用的方法,都仅返回创建这个对象的那个时刻的时间信息,不会随时间变化;
Date()
构造函数本身,不 new 的话,空执行,可以生成日期的字符串;
getDate()
返回一个月中的某一天;
今天是 9 号;
getDay()
返回一周的第几天;周天返回 0 ,周一是 1 ,周二是 2,以此类推;
今天是周三,返回的 3 并不是指周三,是一周的第四天,外国人(古希腊开始)是周天开始算一周的开始,周天返回 0 ;所以,第4天也就返回 3 ,正好也是周三;
getMonth()
返回一年的第几个月;一月返回 0 ,二月返回 1;
11 月就返回10了,所以, getDay() 返回一周里的第几天就好理解了。
算月份的时候,到时要加 1;
getFullYear()
返回以四位数字的年份;
早年使用的 getYear(),会返回 两位数的年份,并在前面加了个 1,这是历史问题,一般就用 getFullYear(),就可以了;
getHours()
返回对象的小时(0-23)
getMinutes()
返回对象的分钟(0-59)
getSeconds()
返回对象的秒数(0-59)
getMilliseconds()
返回对象的毫秒数(0-999)
getTime()
返回1970年1月1日至今的毫秒数;
获取时间戳(一个时刻的印记,可做唯一标识);
这个毫秒数是人为约定的1970年1月1日零点开始的纪元时间,返回的毫秒数是从纪元时间开始到新建对象的那一刻的毫秒数(时间戳)。是个很重要、很常用的时间对象方法;
计算时间差的方法来看代码执行效率,优化代码优化的就是时间;
示例:
计算一段代码执行所用的时间;
var date1 = new Date();
for(var i = 0; i< 100000000; i++){
i += 1;
}
var date2 = new Date();
console.log(date2.getTime() - date1.getTime()) // 62
用后一个时间减前一个时间,得出累加 1亿次 +1 运算所用的毫秒差:62;
除了一系列获得时间的方法外,JS还有一系列设置时间的方法:
Date对象set方法
set 系列方法,可以设置时间
可以通过set方法,包装某一个时刻的时间,例如:闹钟,是未来的某个时刻;
不论 get 还是 set 都要先 new 一个对象出来;
var date = new Date();
setDate()
设置Date对象中某一天(1-31);
某一天是从1开始的;
今天9号,设置到18号;
setMonth()
设置对象中的月份(0-11)
月份是从0开始的;
设置成2,反应出来是一年的第2个月,月份从0计数,所以是3月;
setFullYear()
设置年份(四位数字)
还有个 setYear 是两位数的年份,基本不用了;
setHours()
设置对象的小时数(0-23)
setMinutes()
设置对象的分钟数(0-59)
setSeconds()
设置对象的秒数(0-59)
setMilliseconds()
设置对象的毫秒数(0-999)
如果设置一个超过999的毫秒数,那么日期也会改变:
这样的作用就像 setTime了。
setTime()
设置对象的时间戳
目前的时间戳是个 “16” 开头的 13位数;
示例:
设置一个闹钟:
var date = new Date();
date.setMinutes(26);
setInterval(function () {
if (new Date().getTime() - date.getTime() > 1000) {
console.log("起床了");
}
}, 1000);
每隔一秒执行一次这个函数,到点了,就开始打印。
控制台:
Date对象其他方法
其他方法不是很常用
toString()
对象日期转换成字符串
toTimeString()
对象时间转换成字符串
练习:
封装函数,打印当前是何年何月何日何时,几分分秒;
function myDate() {
var date = new Date();
YY = date.getFullYear();
MM = parseInt(date.getMonth() + 1);
DD = date.getDate();
HH = date.getHours();
MMM = date.getMinutes();
SS = date.getSeconds();
console.log("当前时间:" + YY + "-" + MM + "-" + DD + " " + HH + ":" + MMM + ":" + SS + "");
}
myDate();
控制台: