1. 了解时间
1.1 格里尼治时间(GTM)
是英国郊区格林尼治天文台的时间,因为地球自转的问题,每个时区的时间是不一样的。格林尼治天文台所处的是经度为零的地方,世界上一些重大的时间都是采用的格林尼治时间。
1.2 世界标准时间(UTC)
2. Date
JS中的Date类型是由早期Java.util.Date类型基础之上构建的,所以保存的是距离1970年1月1日0时的毫秒数来存储时间的。
2.1 创建
2.1.1 用Date()函数创建(字符串类型)
var nowDate = Date();<br /> 得到是当前时间<br /> 是字符串类型
var nowDate = Date();
console.log(nowDate); //Thu Mar 04 2021 21:11:35 GMT+0800 (中国标准时间)
console.log(typeof nowDate); //string
2.1.2 使用构造函数创建(对象类型)
1. 不使用参数,得到当前时间
var nowDate = new Date()
var nowDate = new Date();
console.log(typeof nowDate); //object
2. 参数是一个表示时间的字符串
//参数是一个表示时间的字符串
//月、日、年、时、分、秒
//2021-03-04 21:17:09 == 2021-3-4 21:17:9 == 2021/3/4 21:17:9
var date = new Date("2021/3/4 21:17:9"); //Thu Mar 04 2021 21:17:09 GMT+0800 (中国标准时间)
console.log(date);
//省略时、分、秒 默认为0 (默认是标准时间)
date = new Date("2021/03/04");
console.log(date); //Thu Mar 04 2021 00:00:00 GMT+0800 (中国标准时间)
//省略日默认为1日
date = new Date("2021/03");
console.log(date); //Mon Mar 01 2021 00:00:00 GMT+0800 (中国标准时间)
//省略月默认为1月
date = new Date("2021");
console.log(date); //Fri Jan 01 2021 08:00:00 GMT+0800 (中国标准时间)
3. 参数是年、月、日、时、分、秒、毫秒
- 年是必须写的,月是从0开始的,日是从1开始的
- 如果月份超过11,则年份自动增加
- 如果日期超过当月应有的天数,则月份自动增加
- 时、分、秒、毫秒都是如此
//参数是年、月、日、时、分、秒、毫秒 var date = new Date(2021,03,04,21,26,44); //Sun Apr 04 2021 21:26:44 GMT+0800 (中国标准时间) console.log(date);
4. 参数是一个数字
得到的是距离1970年1月1日0时参数毫秒之后的时间注意:对应北京时间需要加8小时
//参数是一个数字,对应的是距离1970年1月1日0时的毫秒
var date = new Date(1583328720603); //Wed Mar 04 2020 21:32:00 GMT+0800 (中国标准时间)
console.log(date);
3. Date对象的方法
3.1 Get
3.1.1 获取当前时间
var date = new Date();
3.1.2 获取年
date.getFullYear();
3.1.3 获取月
date.getMonth();
3.1.4 获取日
date.getDate();
3.1.5 获取星期
date.getDay();
3.1.6 获取时
date.getHours();
3.1.7 获取分
date.getMinutes();
3.1.8 获取秒
date.getSeconds();
3.1.9 获取毫秒
date.getMilliseconds();
3.1.10 获取当前时间距离1970年1月1日0时的毫秒数
date.getTime();
3.2 Set
设置年
date.setFullYear(2017);
设置月
date.setMonth(10);<br /> 月是从0开始,如果月大于等于12,年份增加
设置日
date.setDate(10);<br /> 如果日大于当月应有的天数,月增加
设置星期
注意:星期一般不设置
设置时
date.setHours(08);<br /> 如果时大于23,日增加
设置分钟
date.setMinutes(54);<br /> 如果分钟大于59,时增加
设置秒
date.setSeconds(55);<br /> 如果秒大于59,分增加
设置毫秒
date.setMilliseconds(666);<br /> 如果毫秒大于999,秒增加<br /> 设置距离1970年1月1日0时毫秒数<br /> date.setTime(1507703240504);
3.3 转字符串
3.3.1 包含年月日时分秒
date.toLocalString();
3.3.2 包含年月日
date.toLocalDateString();
3.3.3 包含时分秒
date.toLocalTimeString();
4.Date对象间的运算
两个时间对象相减,得到的是两个对象间相差的毫秒数