Date对象概述

javaScript 提供了 Date 类型来处理时间和日期。Date 对象内置一系列获取和设置日期时间信息的方法。(不是内置对象,需要自己new)

javaScript 中的 Date 类型是在早期 Java 中 java.util.Date 类基础上构建的。

Date类型使用 UTC (Coordinated Universal Time,国际协调时间[又称世界统时间]) 1970 年 1 月1 日午夜(零时)开始经过的毫秒来保存日期。

在使用这种数据存储格式的条件下,Date 类型保存的日期能够精确到 1970 年 1 月 1 日之前或之后的 285616 年。

创建Date对象

创建一个日期对象,使用 new 运算符和 Date 构造方法(构造函数)即可。

//创建一个日期对象而不传递参数的情况下,返回系统当前时间   时间格式:Thu Mar 27 2014 20:18:08 GMT+0800  不同浏览器显示不同
var box = new Date();
console.log(box); // 2019-04-13T13:39:33.968Z //new可以省略
var time = Date();
console.log(time); // Sat Apr 13 2019 21:39:33 GMT+0800 (GMT+08:00) //创建一个指定的时间对象
//需要在构造函数中传递一个表示时间的字符串作为参数
//日期的格式 月份/日/年 时:分:秒
var d2 = new Date("2/18/2011 11:10:30");
console.log(d2) //2011-02-18T03:10:30.000Z

Date对象的两个重要的静态方法

Date.parse()方法

接收一个表示日期的字符串参数,然后尝试根据这个字符串返回相应的毫秒数。

没有定义Date.parse()应该支持哪种日期格式,因此方法的行为因实现而异,因地区而异。默认通常接收的日期格式如下:

'月/日/年',如 6/13/2011;
'英文月名 日, 年',如 May 25, 2004;
'英文星期几 英文月名 日 年 时:分:秒 时区',如 Tue May 25 2004 00:00:00 GMT-070

console.log(Date.parse('6/13/2011')); //

//如果 Date.parse()没有传入或者不是标准的日期格式,那么就会返回 NaN
console.log(Date.parse()); //NaN
console.log(Date.parse("fjkasfjkasfak")); //NaN // 如果想输出指定的日期,那么把 Date.parse()传入 Date 构造方法里
var box1 = new Date(Date.parse('6/13/2011'));//Mon Jun 13 2011 00:00:00 GMT+0800,将毫秒数转换成看的懂得时间格式
var box2 = new Date('6/13/2011'); //直接传入,Date.parse()后台被调用 console.log(box1) // 2011-06-12T16:00:00.000Z
console.log(box2) // 2011-06-12T16:00:00.000Z

Date.UTC()方法

返回表示日期的毫秒数,但它与 Date.parse()在构建值时使用不同的信息。

年份,基于 0 的月份[0 表示 1 月,1 表示 2 月],月中的哪一天[1-31],小时数[0-23],分钟,秒以及毫秒。

只有前两个参数是必须的。如果没有提供月数,则天数为 1;如果省略其他参数,则统统为 0

console.log(Date.UTC(2011,11,2)); //
console.log(Date.UTC(2011,11,2, 12, 33, 43, 32)); // // 如果 Date.UTC()参数传递错误,那么就会出现负值或者 NaN 等非法信息。
console.log(Date.UTC()); //负值或者 NaN var box = new Date(Date.UTC(2011,11, 5, 15, 13, 16));
console.log(box) // 2011-12-05T15:13:16.000Z

Date对象的内置方法

通用方法

与其他类型一样,Date 类型也重写了 toLocaleString()、toString()和 valueOf()方法;但这些方法返回值与其他类型中的方法不同。

var box = new Date(Date.UTC(2011,11, 5, 15, 13, 16));
console.log(box); // 2011-12-05T15:13:16.000Z
console.log('toString:' + box.toString()); // toString:Mon Dec 05 2011 23:13:16 GMT+0800 (GMT+08:00)
console.log('toLocaleString:' + box.toLocaleString()); //按本地格式输出:toLocaleString:2011-12-5 23:13:16
console.log('valueOf:' + box.valueOf()); //返回毫秒:valueOf:1323097996000

日期格式化方法

Date 类型还有一些专门用于将日期格式化为字符串的方法

var box = new Date();
console.log(box); // 2019-04-13T14:04:50.805Z
console.log(box.toDateString()); //以特定的格式显示星期几、月、日和年:Sat Apr 13 2019
console.log(box.toTimeString()); //以特定的格式显示时、分、秒和时区// 22:04:50 GMT+0800 (GMT+08:00)
console.log(box.toLocaleDateString()); //以特定地区格式显示年、月和日:2019-4-13
console.log(box.toLocaleTimeString()); //以特定地区格式显示上午还是下午和时、分、秒:22:04:50
console.log(box.toUTCString()); //以特定的格式显示完整的 UTC 日期:Sat, 13 Apr 2019 14:04:50 GMT

组件方法

单独获取你想要的各种时间/日期而提供的方法。

需要注意的是,这些方法中,有带 UTC 的,有不带 UTC 的。UTC 日期指的是在没有时区偏差的情况下的日期值。

var box = new Date();
console.log(box.getTime()); //获取日期的毫秒数,和 valueOf()返回一致:1555167669220
console.log(box.setTime(100)); //以毫秒数设置日期,会改变整个日期:100 console.log(box.getFullYear()); //获取四位年份:1970
console.log(box.setFullYear(2012)); //设置四位年份,返回的是毫秒数:1325376000100 console.log(box.getMonth()); //获取月份,没指定月份,从 0 开始算起:0
console.log(box.setMonth(11)); //设置月份,返回毫秒数:1354320000100 console.log(box.getDate()); //获取日期:1
console.log(box.setDate(8)); //设置日期,返回毫秒数:1354924800100 console.log(box.getDay()); //返回星期几,0 表示星期日,6 表示星期六:6
//console.log(box.setDay(2)); //设置星期几 console.log(box.getHours()); //返回时
console.log(box.setHours(12)); //设置时 console.log(box.getMinutes()); //返回分钟
console.log(box.setMinutes(22)); //设置分钟 console.log(box.getSeconds()); //返回秒数
console.log(box.setSeconds(44)); //设置秒数 console.log(box.getMilliseconds()); //返回毫秒数
console.log(box.setMilliseconds()); //设置毫秒数 console.log(box.getTimezoneOffset()); //返回本地时间和 UTC 时间相差的分钟数

将日期时间对象格式化成符合阅读习惯的格式

获取当前日期时间对象,将年月日时分秒,分别获取出来,拼接成字符串的样式

var date = new Date();
var year = date.getFullYear();
var month = date.getMonth()+1;
var day = date.getDate();
if(month<10)
month="0"+month;
if(day<10)
day = "0"+day
var hours = date.getHours()
var minutes = date.getMinutes();
var second = date.getSeconds(); //拼接成2014年3月26日 20:23:23
var dateTime = year+"年"+month+"月"+day+"日"+" "+hours+":"+minutes+":"+second;
console.log(dateTime); //2019年04月13日 23:18:50

将日期时间对象格式化成符合阅读习惯的格式扩展

<script type="text/javascript">
function getDateDemo(){
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth()+1;
var day = date.getDate();
if(month<10)
month="0"+month;
if(day<10)
day = "0"+day; var hours = date.getHours();
if(hours<10)
hours = "0"+hours; var minutes = date.getMinutes();
if(minutes<10)
minutes = "0"+minutes; var second = date.getSeconds();
if(second<10)
second = "0"+second;
var mSecond = date.getMilliseconds(); //拼接成2014年3月26日 20:23:23
var dateTime = year+"年"+month+"月"+day+"日"+" "+hours+"时"+minutes+"分"+second+"秒"+mSecond;
// document.write(dateTime); //通过DOM获取节点方法,找到div节点标签document.getElementById();
var divNode = document.getElementById("time");
//使用div的属性:innerHTML
divNode.innerHTML = dateTime;
}
window.setInterval("getDateDemo()",100);
</script>
<style type="text/css">
div{width:242px;float:left;}</style>
</head>
<body>
<div id="time"> </div><span>毫秒</span>
</body>

对象日期的计算:计算两个时间相隔多少天:2013-2-3—2014-3-4

将字符串转换成日期对象(毫秒值)使用的是Date对象的parse()方法,将两个毫秒值相减等到的毫秒值/1000/60/60/24

parse()方法传入的时间格式是月/日/年等合法的格式

将两个毫秒值相减得到的结果可能是负数,但是时间是没有负数的,所以应该得到的结果毫秒值进行绝对值的转换后在/1000/60/60/24

function DateDemo(){
var day1 = '2/3/2013';
var day2 = '2/6/2015'; var time1 = Date.parse(day1);//返回时间的毫秒值
var time2 = Date.parse(day2);
console.log(time1) //
console.log(time2) //
console.log((Math.abs(time2-time1))/1000/60/60/24);
}
DateDemo();

JavaScript—Date对象详情的更多相关文章

  1. JavaScript Date 对象

    JavaScript Date 对象 Date 对象 Date 对象用于处理日期与实际. 创建 Date 对象: new Date(). 以上四种方法同样可以创建 Date 对象: var d = n ...

  2. JavaScript Date对象 日期获取函数

    JavaScript Date对象使用小例子: 运行结果: 总结: 1.尽管我们认为12月是第12个月份,但是JavaScript从0开始计算月份,所以月份11表示12月: 2.nowDate.set ...

  3. JavaScript Date对象介绍

    原文:JavaScript Date对象介绍 Date 日期和时间对象 1. 介绍 Date对象,是操作日期和时间的对象.Date对象对日期和时间的操作只能通过方法. 2. 构造函数 2.1 new ...

  4. JavaScript&Date对象

    JavaScript Date对象 <script type="text/javascript"> var date = new Date(); document.wr ...

  5. javascript Date对象 之 date初始化

    javascript Date对象 --> 日期初始化: 总结: 日期初始化的 方式: 1. new Date( yyyy, M(+), d(+), h(+), m(+), s(+) ); 2. ...

  6. javascript Date对象 之 时间转字符串

    javascript Date对象 --> 时间转字符串: 测试代码: <!DOCTYPE html> <html lang="en"> <he ...

  7. javascript Date对象 之 获取时间

    javascript Date对象 --> 获取时间: 测试代码: <!DOCTYPE html> <html lang="en"> <head ...

  8. javascript Date对象 之 设置时间

    之前对js的date对象总是感觉熟悉,而不愿细细深究其所以然,所以每当自己真正应用起来的时候,总会糊里糊涂的,今日花费2个小时的时间仔细钻研了一下,感觉 豁然开朗,故,以此记录,一来 供以后查阅,二来 ...

  9. 浏览器端-W3School-JavaScript:JavaScript Date 对象

    ylbtech-浏览器端-W3School-JavaScript:JavaScript Date 对象 1.返回顶部 1. Date 对象 Date 对象用于处理日期和时间. 创建 Date 对象的语 ...

随机推荐

  1. 先装IIS后装.Net Framework

    1.动态页面和静态页面的区别 动态页面(动态网站):通过C#代码(或别的语言)与服务器的交互的实现(比如新建一个ashx一般处理程序中的C#代码就可以和服务器实现交互,修改数据库,上传图片等都属于和服 ...

  2. mysqlslap 压力测试使用总结

    今天从运维同事那听说了mysql压力测试工具mysqlslap.经了解其实mysql自带就有一个叫mysqlslap的压力测试工具,还是模拟的不错的.下面举例说说.mysqlslap是从5.1.4版开 ...

  3. 深入理解JAVA中的NIO

    前言: 传统的 IO 流还是有很多缺陷的,尤其它的阻塞性加上磁盘读写本来就慢,会导致 CPU 使用效率大大降低. 所以,jdk 1.4 发布了 NIO 包,NIO 的文件读写设计颠覆了传统 IO 的设 ...

  4. Java学习笔记之——内部类

    内部类 形式:把一个类定义在一个类的内部. 分为:成员内部类和匿名内部类重点掌握 a) 成员内部类 b) 静态成员内部类 c) 匿名内部类 d) 局部内部类 (1)成员内部类: Java的语言是面向对 ...

  5. 2018年,JavaScript都经历了什么?

    摘要: 对JSer来说,这是很有意思的1年. 本文灵感来自JavaScript Weekly周报,欢迎大家订阅. The State of JavaScript 2018 The State of J ...

  6. 多线程编程CompletableFuture与parallelStream

    一.简介 平常在页面中我们会使用异步调用$.ajax()函数,如果是多个的话他会并行执行相互不影响,实际上Completable我理解也是和它类似,是java 8里面新出的异步实现类,Completa ...

  7. 快速排序的java实现

    快速排序也属于“交换”类的排序. 核心思想可以概括为:通过多次划分操作实现排序.每一趟选择当前所有子序列中的一个关键字(通常是第一个)作为枢轴,将小于它的元素统统放到它的前面,大于它的统统放到它的后面 ...

  8. 20.Odoo产品分析 (三) – 人力资源板块(1) – 员工目录(1)

    查看Odoo产品分析系列--目录 人力资源指在一个国家或地区中,处于劳动年龄.未到劳动年龄和超过劳动年龄但具有劳动能力的人口之和.狭义讲就是企事业单位独立的经营团体所需人员具备的能力(资源).(解释来 ...

  9. Javascript 对象 - 字符串对象

    字符串对象 字符串对象是JavaScript中比较常见的一种基本数据类型,他封装了一个字符串,并且提供了相应的方法.例如连接字符串.取字符串.分割字符串等.JavaScript中字符串是不可变的,原始 ...

  10. 应用生命周期终极 DevOps 工具包

    [编者按]本文作者为 Kevin Goldberg,主要介绍了在开发.运营应用的完整生命周期当中,可能用到的 DevOps 工具大集合.文章系 OneAPM 工程师编译整理. DevOps工具包中合适 ...