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. Java注解(一):介绍,作用,思想及优点

    “注解优先于命令模式”-出自<Effective Java> Java 注解,从名字上看是注释,解释.但功能却不仅仅是注释那么简单.注解(Annotation) 为我们在代码中添加信息提供 ...

  2. 使用Rotativa在ASP.NET Core MVC中创建PDF

    在本文中,我们将学习如何使用Rotativa.AspNetCore工具从ASP.NET Core中的视图创建PDF.如果您使用ASP.NET MVC,那么Rot​​ativa工具已经可用,我们可以使用 ...

  3. [翻译 EF Core in Action 1.8] MyFirstEfCoreApp应用程序设置

    Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Cor ...

  4. PHP开发模式之-单例模式

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 class  Db{ private function __construct(){} private static ...

  5. redis-dump实现redis库迁移

    最近公司有切换redis库的需求,找了个简单的redis迁移方法,不过也有缺点.就是对于实时性要求很高的redis库迁移无法做到数据的实时同步.不过对于简单的redis库备份和迁移还是可以的,各位看官 ...

  6. python3 变量理解 解释器理解 常量理解 用户交互理解 逻辑运算

    先来条NLP再说...... 九,每人都已经具备使自己快乐的资源 每一个人都有过成功快乐的体验,也即是说有使自己快乐的能力. 人类只用了大脑能力极少部分,提升大脑的运用,很多新的突破便会出现. 运用大 ...

  7. vue 中 vue-router、transition、keep-alive 怎么结合使用?

    <transition :name="name" mode="out-in" name="fade"> <keep-ali ...

  8. 在word中如何美观地插入代码

    打开这个网站 http://www.planetb.ca/syntax-highlight-word 进去后我们看到下面的界面 中间的空白文本框,可以插入代码,下面可以选择代码种类,最后点击Show ...

  9. 微信小程序开发笔记

    前言: 因为前段时间一直在做关于微信小程序方面的项目,作为一名后端的攻城狮而言做一些简单的前端页面数据操作和管理还是比较容易快上手的,当然前提是要理解微信小程序的基本语法和请求原理.该篇博客主要记录的 ...

  10. C语言ftell()函数

      ftell()函数返回指定流的当前文件指针的位置.在文件末尾移动文件指针后,我们可以使用ftell()函数获取文件的总大小.可以使用SEEK_END常量来将文件指针移动文件末尾. ftell()函 ...