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. 01-java前言、入门程序、变量、常量

    今日目标 能够计算二进制和十进制数之间的互转 能够使用常见的DOS命令 理解Java语言的跨平台实现原理 jvm是运行java程序的假想计算机,所有的java程序都运行在它上面.java编写的软件可以 ...

  2. python接口自动化(二十一)--unittest简介(详解)

    简介 前边的随笔主要介绍的requests模块的有关知识个内容,接下来看一下python的单元测试框架unittest.熟悉 或者了解java 的小伙伴应该都清楚常见的单元测试框架 Junit 和 T ...

  3. requests使用“proxy”代理访问接口

    在requests中使用proxy代理访问 使用前先更新requests版本为支持socks的版本.   先pip安装对应库:  >> pip install -U requests[so ...

  4. 用Docker解决坑爹的环境搭建系列——mysql:5.6

    sudo docker pull mysql:5.6 mkdir -p /data/docker/mysql/data /data/docker/mysql/logs /data/docker/mys ...

  5. C++删除文件末尾字符

    C++中使用fstream来进行文件读写,如果要覆盖文件末尾的部分字符,应该怎么操作呢? #include <iostream> #include <fstream> std: ...

  6. 企业级Harbor介绍及安装

    企业级Harbor介绍及安装 一.Harbor介绍 VMware公司最近开源了企业级Registry项目Harbor,其的目标是帮助用户迅速搭建一个企业级的Docker registry 服务.它以D ...

  7. 游戏服务器h2engine架构优化和跨平台设计

    H2engine的GitHub星星不知不觉已经破百了,也没有特意推广过,但是慢慢的关注的人越来越多.因为事情多,好久没有写东西了,前一段时间有了一些想法,把h2engine又更新了一下,感觉h2eng ...

  8. 结合JDK源码看设计模式——适配器模式

    定义: 将一个类的接口转换成客户期望的另外一个接口(重点理解适配的这两个字),使得接口不兼容的类可以一起工作适用场景: 已经存在的类,它的方法和需求不匹配的时候 在软件维护阶段考虑的设计模式 详解 首 ...

  9. Win64下编译OSG详细过程(Win10+VS2015+OSG3.6.3)

    目录 1. 数据资源准备 2. 编译第三方库 3. 编译GDAL 4. 编译OSG 1) CMAKE_INSTALL_PREFIX: 2) BUILD_OSG_EXAMPLES/BUILD_MFC_ ...

  10. 一款Android图文识别与扫描软件

    OCR图文识别App 是一款准确高效的 OCR文字识别与扫描软件,识别准确度高,速度快,扫描文件清晰,可导出TXT.Excel. 免费使用. 技术 基于百度在业界领先的人工智能与深度学习技术,提供对身 ...