首先在学习Date()类型之前,我们需要了解一些关于Date的知识。
标准时间
UTC:世界协调时间(UTC)又称世界统一时间,世界标准时间,国际协调时间,全称Coordinated Universal Time,是以原子时秒长为基础,在时刻上尽量接近于世界时的一种时间计量系统 。
关于日期时间的字符串格式
ECMAScript定义了一个基于简化的ISO8601扩展格式的日期时间的字符串互换格式。
日期时间完整格式: YYYY-MM-DDTHH:mm:ss.sssZ(注意:前置0不能省略,否则在完整格式的情况下会报错).
准确的格式如下所示:
YYYY 公历中年的十进制数字,如果这个参数值在0-99之间,则向它加上1900
- 在字符串中直接以“-”(破折号)出现两次
MM 一年中的月份,从01(一月)到12(十二月)
DD 月份中的日期,从01到31
T 在字符串中直接以“T”出现,用来表明时间元素的开始
HH 用两个十进制数字表示的,自午夜0点以来的小时数
: 在字符串中直接以“:”(冒号)出现两次
mm 是用两个十进制数字表示的,自小时开始以来的分钟数
ss 是用两个十进制数字表示的,自分开始以来的秒数
. 在字符串中直接以“.”(点)出现
sss 是用三个十进制数字表示的,自秒开始以来的毫秒数
Z 是时区偏移量,由(“Z”(指UTC)或“+”或“-”)和后面跟着的时间表达式hh:mm组成
只表示日期的格式: YYYY 或 YYYY-MM 或 YYYY-MM-DD
值得注意的是:所有数字必须是10进制的。如果缺少MM或DD字段,用“01”作为它们的值。如果缺少mm或ss字段,用“00”作为它们的值,对于缺少的sss用“000”作为它的值。对于缺少的时区偏移量用“Z”。
日期的Date对象
Javascript中的Date类型是在Java中的java.util.Date类的基础上构建的。因此,Date类型使用了UTC(国际协调时间)1970年1月1日午夜(零时)开始经过的毫秒数来保存日期。在这种存储条件下,Date类型能保存的日期能够精确到1970年1月1日之前或之后的100000000年。
创建一个日期的对象:
var date = new Date();
Date提供的静态方法
Date一共提供了3中静态的方法,分别是Date.now()方法,Date.parse()方法,和Date.UTC()方法。这些方法通过Date()构造函数本身调用,而不是通过Date实例对象。
1.Date.now()方法:
Date.now()方法是用来计算当前距离1970年1月1日零时的毫秒数是多少,这个方法一般可以用来计算一段程序所运行的时间,例如:
function f() {
var sum = 0;
for (var i=0;i<10000;i++){
sum += i;
}
console.log(sum); //49995000
}
var start = Date.now();
f();
var end = Date.now();
var time = end - start;
console.log(time); //1 -----表示了该段程序运行的时间是1毫秒
2.Date.parse()方法:
该方法用于解析一个日期字符串,参数是一个包含待解析的日期和时间的字符串,返回从1970年1月1日0点到给定日期的毫秒数。
该方法会根据日期时间字符串格式规则来解析字符串的格式,除了标准格式外,以下格式也支持。如果字符串无法识别,将返回NaN
1、‘月/日/年’ 如6/13/2004
2、‘月 日,年’ 如January 12,2004或Jan 12,2004
3、‘星期 月 日 年 时:分:秒 时区’ Tue May 25 2004 00:00:00 GMT-0700
注意:浏览器不支持不表示日期只表示时间的字符串格式。
console.log(Date.parse('6/13/2004'));//1087056000000
console.log(Date.parse('January 12,2004'));//1073836800000
console.log(Date.parse('Tue May 25 2004 00:00:00 GMT-0700'));//1085468400000
console.log(Date.parse('2004-05-25T00:00:00'));//1085443200000
console.log(Date.parse('2016'));//1451606400000
console.log(Date.parse('T00:00:00'));//NaN
console.log(Date.parse());//NaN
注意:在ECMAScript5中,如果使用标准的日期时间字符串格式规则的字符串中,数学前有前置0,则会解析为UTC时间,时间没有前置0,则会解析为本地时间。其他情况一般都会解析为本地时间。
console.log(Date.parse('7/12/2016'));//1468252800000
console.log(Date.parse('2016-7-12'));//1468252800000
console.log(Date.parse('2016-07-12'));//1468281600000
3.Date.UTC()方法:
Date.UTC()同样返回给定日期的毫秒数,但其参数并不是一个字符串,而是分别代表年、月、日、时、分、秒、毫秒的数字参数
Date.UTC(year,month,day,hours,minutes,seconds,ms),year和month参数是固定的,其余参数可选。
该函数有7个形参,所以length为7.
console.log(Date.UTC.length); //7
该方法使用的是UTC的时间,而不是本地的时间。
console.log(Date.UTC(1970));//NaN
console.log(Date.UTC(1970,0));//0
console.log(Date.UTC(1970,0,2));//86400000
console.log(Date.UTC(1970,0,1,1));//3600000
console.log(Date.UTC(1970,0,1,1,59));//714000
console.log(Date.UTC(1970,0,1,1,59,30));//717000
日期的格式化方法
日期的格式化方法主要包括5种,分别是:toDateString()方法,toTimeString()方法,toLocaleDateString()方法,toLocaleTimeString()方法,toUTCString()方法。
这些方法的输出是根据浏览器而异的,没有哪一个方法能够用来在用户界面中显示一致的信息。
toDateString():-------------------------以特定于实现的格式显示星期几,月,日,和年;
toTimeString():-------------------------以特定于实现的格式显示时,分,秒,和时区;
toLocaleDateString():----------------以特定于地区的格式显示星期几,月,日,和年;
toLocaleTimeString():----------------以特定于实现的格式显示时,分,和秒;
toUTCString():-------------------------以特定于实现的格式完整的UTC日期
以下是这5中方法的显示结果:
var now = new Date();
console.log(now.toDateString())
console.log(now.toTimeString())
console.log(now.toLocaleDateString())
console.log(now.toLocaleTimeString())
console.log(now.toUTCString())
Mon Aug 26 2019
22:25:01 GMT+0800 (中国标准时间)
2019/8/26
下午10:25:01
Mon, 26 Aug 2019 14:25:01 GMT
日期和时间的组件方法
这里面主要由两类方法组成:get类和set类
在我们的实际操作中,主要以获取时间为主,下面我将用代码介绍一些方法,其余方法参照JS文档。
// 创建实例对象
var dt = new Date();
//获取年份
console.log(dt.getFullYear());
//获取月份=======从0开始,真实的月份是需要加一的。
console.log(dt.getMonth());
//获取日期
console.log(dt.getDay());
//获取小时
console.log(dt.getHours());
//获取分钟
console.log(dt.getMinutes());
//获取秒
console.log(dt.getSeconds());
//获取星期
console.log(dt.getMilliseconds());
以上就是Date()类型的一些基本的方法,如果想要更深入的了解,请查看JS文档,并且手动敲一下例子更好的理解一下~
参考文档:https://www.cnblogs.com/xiaohuochai/p/5663102.html