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

火狐的结果:

谷歌的结果:
  • 传入一个字符参数(因为直接设置,没有涉及到计算,所以不会有从0开始的情况;没有设置的部分会清零;设置错误,显示意外的日期)
 var d1 = new Date("2018.08.08 20:08:08");
var d2 = new Date("2018.08.08");
var d3 = new Date("2018,08,08");
var d4 = new Date("2018-08-08");
var d5 = new Date("2018/08/08");
var d6 = new Date("2018/13/08"); //看总结 console.log(d1);
console.log(d2);
console.log(d3);
console.log(d4);
console.log(d5);
console.log(d6);

火狐的结果:

谷歌的结果:
  • 传入多个数值参数(涉及到计算,部分参数有从0开始的情况;没有设置的部分会清零;超出的部分会进1)
 var d1 = new Date(2008,7,8,20,8,8);
var d2 = new Date(2008,12,8,20,8,8);
var d3 = new Date(2008,7,8);
var d4 = new Date(2008,7,355); //看总结
console.log(d1);
console.log(d2);
console.log(d3);
console.log(d4);

火狐的结果:

谷歌的结果:
结合上面的这些例子,我们可得到以下几点:
1.每个浏览器支持的日期格式不同,显示日期的格式也不同。
2.传入一个字符参数的时候,最后一个月份写成十三月,程序会报错,这个符合常理
3.传入的是多个数值参数的时候,不再按常识来显示,而是有一套自己的规则,那就是月份和日期的取值从0开始,1月用0来表示,后面的依次提前一个位置,也就是12月为11,这个虽不符合常识,但很符合计算机的原理,之后会在获取日期的get系列中用实例来演示。
4.最后一个有点类似于之前传入一个字符参数的实例中,那个超出范围的例子,但在这里是行得通的,也就是写了超过范围的数值,会发生进位,比如:我写了13月,会进位到下一年的2月份。
5.火狐中日期在取值范围方面和月份有同样的规则,但谷歌没有。
 
获取(get系列)
var d = new Date();

//  从日期对象获取信息
console.log(d);
console.log("年份:" , d.getFullYear());
console.log("月份" , d.getMonth()); //从0开始,0表示一月
console.log("日期" , d.getDate());
console.log("星期" , d.getDay());
console.log("------------------------------------------");
console.log("小时" , d.getHours());
console.log("分钟" , d.getMinutes());
console.log("秒钟" , d.getSeconds());
console.log("毫秒" , d.getMilliseconds()); console.log("时间戳" , d.getTime()); //获取从1970年1月1日至今的毫秒

 
设置(set系列)
除了获取日期,我们也可以设置日期,有两种方式。各参数中只有星期不能设置,会根据设置的其他参数自动获取,
1.简易模式,简单粗暴,但是会清零时分秒
 var d = new Date("2008/8/8");
console.log(d);

2.复杂模式,每个部分都设置一遍,不设置的默认为当前时间的组成部分

var d = new Date();
d.setFullYear(2010); //设置年
d.setMonth(6); //设置月,超过11,累加年,0表示一月
d.setDate(27); //设置日,超过最大日期,累加月,0表示一号
d.setHours(40); //设置小时,超过24,累加天
d.setMinutes(40); //设置分钟,超过60,累加小时
d.setSeconds(40); //设置秒,超过60,累加分钟
d.setMilliseconds(40); //设置毫秒,超过1000,累加秒
//d.setTime(10000); //设置从1970年1月1日过去了多少毫秒,独立的设置日期的方式,相当于set系列其他的组合 console.log(d); //返回更改后的年月日 时分秒 // set系列不像get系列需要拿返回值,但是本身也有返回值
// 返回值是从1970年1月1号 0:0:0到当前设置的日期的毫秒数
console.log(d.getMilliseconds());

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

 总结

(1)获取日期时,获取整体日期,直接找创建的日期对象,获取日期中的某一部分,用get系列。

(2)设置日期时,设置整体日期,直接在创建的时候传参,设置日期中的某一部分,用set系列

 
 

剑指前端(前端入门笔记)——Date类型的更多相关文章

  1. 每天成长一点---WEB前端学习入门笔记

    WEB前端学习入门笔记 从今天开始,本人就要学习WEB前端了. 经过老师的建议,说到他每天都会记录下来新的知识点,每天都是在围绕着这些问题来度过,很有必要每天抽出半个小时来写一个知识总结,及时对一天工 ...

  2. 《剑指offer》解题笔记

    <剑指offer>解题笔记 <剑指offer>共50题,这两周使用C++花时间做了一遍,谨在此把一些非常巧妙的方法.写代码遇到的难点.易犯错的细节等做一个简单的标注,但不会太过 ...

  3. 《JavaScript高级程序设计》读书笔记 ---Date 类型

    ECMAScript 中的Date 类型是在早期Java 中的java.util.Date 类基础上构建的.为此,Date类型使用自UTC(Coordinated Universal Time,国际协 ...

  4. 《剑指offer》读书笔记

    二叉树 重建二叉树 面试题6:(p55) 题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树. 假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 例如输入前序遍历序列{1, 2, 4 ...

  5. 前端PHP入门-004-数据类型,特别需要注意字符串

    人类世界对万事万物都有种类划分,例如: 哺乳动物 人.猫.马.鸭嘴兽-.等等 蔬菜 西红柿.波菜.茄子-.等等 水果 西瓜.桃子.苹果-.等等 数据类型:就是对数据分类的一个划分而已 整型就是整数 我 ...

  6. 剑指offer刷题笔记

    删除链表中重复的结点:较难 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4- ...

  7. 剑指Offer的学习笔记(C#篇)-- 序列化二叉树

    题目描述 请实现两个函数,分别用来序列化和反序列化二叉树 一 . 理解题意 二叉树的序列化,是将一个结构化的东西变成扁平化的字符串,序列化二叉树或者是反序列化二叉树就是二叉树和扩展二叉树遍历序列之间的 ...

  8. 剑指Offer的学习笔记(C#篇)-- 从上往下打印二叉树

    题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 一 . 题目解析 了解过二叉树就应该知道,二叉树存在三种遍历方法:前序遍历(根→左→右).中序遍历(左→根→右).后续遍历(左→右→根 ...

  9. 剑指Offer的学习笔记(C#篇)-- 从尾到头打印链表

    题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 一 . 个人想法 这个题目搞了一段时间,因为解法好多,比如:是用递归法呢还是循环呢,要不要使用栈呢等等.. 所以,每一种想法 ...

  10. 剑指Offer的学习笔记(C#篇)-- 包含min函数的栈

    题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 一 . 题目该怎么想 1 . 定义栈的数据结构:实现Push.Pop.Top.Min方 ...

随机推荐

  1. 神奇的Scala Macro之旅(三)- 实际应用

    在上一篇中,我们示范了使用macro来重写 Log 的 debug/info 方法,并大致的介绍了 macro 的基本语法.基本使用方法.以及macro背后的一些概念, 如AST等.那么,本篇中,我们 ...

  2. 浅析一款扫描dom-xss的浏览器插件

    目录 0x00 前言 0x01 浅析 0x00 前言 这款插件的名字叫 ra2-dom-xss-scanner,其作者刚好也是jsprime的开发者,后续有可能会继续跟进一下jsprime.这个ra2 ...

  3. RabbitMQ 消息队列 入门 第二章(交换类型fanout)

    1.安装完 RabbitMQ 之后,我们可以点击  http://localhost:15672/#/  默认账号:guest  密码: guest  在这上面我们可以查看执行情况.管理连接.管理队列 ...

  4. Python:游戏:300行代码实现俄罗斯方块

    本文代码基于 python3.6 和 pygame1.9.4. 俄罗斯方块是儿时最经典的游戏之一,刚开始接触 pygame 的时候就想写一个俄罗斯方块.但是想到旋转,停靠,消除等操作,感觉好像很难啊, ...

  5. 【我们一起写框架】C#的AOP框架

    前言 AOP,大家都是听过的,它是一种面向切面的设计模式. 不过AOP虽然是被称为设计模式,但我们应该很少能看到AOP设计的框架.为什么呢? 因为,AOP单独设计的框架几乎是无法使用的.普遍的情况是, ...

  6. DateUtil日期工具类

    目录 (1)需要导入的包 (2)DateUtil类 (1)需要导入的包 主要用于Strings.isNullOrEmpty(date) <!--string处理类--> <depen ...

  7. Angular(03)-- lint风格规范和WebStorm小技巧

    在开始讲 Angular 各个核心知识点之前,想先来讲讲开发工具 WebStorm 的一些配置以及相应配置文件如 tslint.json 的配置. 因为我个人比较注重代码规范.代码风格,而对于这些规范 ...

  8. spring 【二】学习之spring EL

    spring EL-spring 表达式语言,支持在xml和注解的形式,类似于JSP的el表达式的形式. 其主要使用@Value注解的结构形式 其主要功能 [1].注入普通字符串 [2].注入操作系统 ...

  9. 单元测试过多,导致The configured user limit (128) on the number of inotify instances has been reached.

    最近在一个asp.net core web项目中使用TDD的方式开发,结果单元测试超过128个之后,在CI中报错了:"The configured user limit (128) on t ...

  10. .NET程序员不加班——写在《华为工程师猝死,36岁,22月无休》之后

    我首先承认,有点标题党.因为这是我这个十年老码农——过了年就整整11年了,o(╥﹏╥)o——的个人观察.经验所得.如果有仍在加班的.NET童鞋,不要打我.一定要打的话,只有一个要求:不要打脸! 写这篇 ...