剑指前端(前端入门笔记)——Date类型

2019-04-26 08:21:11来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

Date类型
  ECMAScript中的Date类型是在早期Java中的java.util.Date类基础上构建的。为此,Date类型使用自UTC(国际协调时间)1970年1月1日午夜(零时)开始经过的毫秒数来保存日期。在使用这种数据存储格式的条件下,Date类型保存的日期能够精确到1970年1月1日之前或之后的100 000 000 年。
 
创建
要创建一个日期对象,使用new操作符和Date构造函数即可,也就是:
  • 默认参数
1 var now = new Date(); 
2 console.log(now);

火狐的结果:

谷歌的结果:
  • 传入一个字符参数
 1 var d1 = new Date("2018.08.08 20:08:08");
 2 var d2 = new Date("2018.08.08");
 3 var d3 = new Date("2018,08,08");
 4 var d4 = new Date("2018-08-08");
 5 var d5 = new Date("2018/08/08");
 6 var d6 = new Date("2018/13/08");      //看总结
 7 
 8 console.log(d1);    
 9 console.log(d2);
10 console.log(d3);
11 console.log(d4);
12 console.log(d5);
13 console.log(d6);

火狐的结果:

谷歌的结果:
  • 传入多个数值参数
1 var d1 = new Date(2008,7,8,20,8,8);
2 var d2 = new Date(2008,12,8,20,8,8);
3 var d3 = new Date(2008,7,8);
4 var d4 = new Date(2008,7,355);       //看总结
5 console.log(d1);
6 console.log(d2);
7 console.log(d3);
8 console.log(d4);

火狐的结果:

谷歌的结果:

 

结合上面的这些例子,我们可得到以下几点:
1.每个浏览器支持的日期格式不同,显示日期的格式也不同。
2.传入一个字符参数的时候,最后一个月份写成十三月,程序会报错,这个符合常理
3.传入的是多个数值参数的时候,不再按常识来显示,而是有一套自己的规则,那就是月份和日期的取值从0开始,1月用0来表示,后面的依次提前一个位置,也就是12月为11,这个虽不符合常识,但很符合计算机的原理,之后会在获取日期的get系列中用实例来演示。
4.最后一个有点类似于之前传入一个字符参数的实例中,那个超出范围的例子,但在这里是行得通的,也就是写了超过范围的数值,会发生进位,比如:我写了13月,会进位到下一年的2月份。
5.火狐中日期在取值范围方面和月份有同样的规则,但谷歌没有。
 
 
Date类型的方法很多,下面列出一些常用的方法
 
获取(get系列)
   
 1  var d = new Date();
 2 
 3 //  从日期对象获取信息
 4     console.log(d.getFullYear());    //获取年
 5     console.log(d.getMonth());       //获取月,注意月份是从0开始
 6     console.log(d.getDate());        //获取日
 7     console.log(d.getDay());         //获取周
 8 
 9     console.log(d.getHours());       //获取小时
10     console.log(d.getMinutes());     //获取分钟
11     console.log(d.getSeconds());     //获取秒数
12     console.log(d.getMilliseconds());//获取毫秒
13 
14 //  时间戳
15     console.log(d.getTime());        //获取从1970年1月1日至今的毫秒
16     console.log(d);                   //返回本地时间,包含年月日星期时分秒

 

设置
除了获取日期,我们也可以设置日期,有两种方式:
1.简易模式,简单粗暴,但是会清零时分秒
1 var d = new Date("2008/8/8");
2 console.log(d);

 

2.复杂模式,每个部分都设置一遍
 1 var d = new Date();
 2 d.setFullYear(2009);    //设置年
 3 d.setMonth(6);          //设置月,超过11,累加年
 4 d.setDate(27);          //设置日,超过最大日期,累加月
 5 d.setHours(40);         //设置小时,超过24,累加天
 6 d.setMinutes(40);       //设置分钟,超过60,累加小时
 7 d.setSeconds(40);       //设置秒,超过60,累加分钟
 8 d.setMilliseconds(40);  //设置毫秒,超过1000,累加秒
 9 d.setTime(10000);        //设置从1970年1月1日过去了多少毫秒
10 
11 console.log(d);          //返回更改后的年月日 时分秒
12 
13 // set系列不像get系列需要拿返回值,但是本身也有返回值
14 // 返回值是从1970年1月1号 0:0:0到当前设置的日期的毫秒数
15 console.log(d.getMilliseconds());
16 
17 var t1 = d.setDate(31);
18 var t2 = d.setHours(8);
19 console.log(t1);
20 console.log(t2);

 

格式化
Date类型还有一些专门用于将日期格式化为字符串的方法,这些方法如下:
 1 var d = new Date();
 2 var d1 = d.toDateString();              //以特定于实现的格式显示星期几、月、日和年
 3 var d2 = d.toTimeString();              //以特定于实现的格式显示时、分、秒和时区
 4 var d3 = d.toLocaleDateString();        //以特定于地区的格式显示星期几、月、日和年
 5 var d4 = d.toLocaleTimeString();        //以特定于实现的格式显示时、分、秒
 6 var d5 = d.toLocaleTimeString();        //以特定于实现的格式显示完整的UTC日期
 7 
 8 console.log(d);
 9 console.log(d1);
10 console.log(d2);
11 console.log(d3);
12 console.log(d4);
13 console.log(d5);

 

 
 

原文链接:https://www.cnblogs.com/AI-fisher/p/10770791.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:CANVAS实现调色板 之 我的第一个随笔

下一篇:页面性能优化-原生JS实现图片懒加载