一、Date 对象
Date 是 js 的一个内置对象,该对象存储日期和时间,并提供了日期/时间的管理方法
new Date()
在不传递参数的情况想是默认返回当前时间
var time = new Date ( ) ;
console. log ( time) ;
new Date()
在传入参数的时候,可以获取一个你传递进去的时间
var time = new Date ( '2019-03-03 13:11:11' ) ;
console. log ( time) ;
传递2个数字,第一个表示年,第二个表示月份
var time = new Date ( 2019 , 00 )
console. log ( time)
传递3个数字,前两个不变,第三个表示该月份的第几天,从1到31
var time = new Date ( 2019 , 00 , 05 )
console. log ( time)
传递4个数字,前三个不变,第四个表示当天几点,从 0 到 23
var time = new Date ( 2019 , 00 , 05 , 22 )
console. log ( time)
传递5 个数字,前四个不变,第五个表示的是该小时的多少分钟,从 0 到 59
var time = new Date ( 2019 , 00 , 05 , 22 , 33 )
console. log ( time)
传递 6 个数字,前 五个不变,第六个表示该分钟的多少秒,从 0 到 59
var time = new Date ( 2019 , 00 , 05 , 22 , 33 , 55 )
console. log ( time)
传入字符串的形式
console. log ( new Date ( '2019' ) )
console. log ( new Date ( '2019-02' ) )
console. log ( new Date ( '2019-02-03' ) )
console. log ( new Date ( '2019-02-03 13:' ) )
console. log ( new Date ( '2019-02-03 13:13:' ) )
console. log ( new Date ( '2019-02-03 13:13:13' ) )
二、Data 方法(常用)
比如我们得到的时间字符串是 Sun Feb 03 2019 13:13:13 GMT+0800 (中国标准时间)
我指向得到这个日期中是那一年,我们就要靠截取字符串的形式得到 但是现在 js 为我们提供了一系列的方法来得到里面的指定内容
2.1、获取时间(单)
标识 方法 描述 年份 getFullYear()
四位数年份 月份 getMonth()
月份(0–11),0 表示一年中的第一月。 天数 getDate()
一个月中的哪一日(1-31) 小时 getHours()
小时(0–23) 分钟 getMinutes()
分钟数(0–59) 秒钟 getSeconds()
秒钟数(0–59) 周几 getDay()
一周中的第几天(0-6),0 表示星期天 居今毫秒 getTime()
表示从 1970 年 1 月 1 日 0 时 0 分 0 秒距离该 Date 对象所代表时间的毫秒数
var time = new Date ( '2019-02-13T08:00:22' ) ;
console. log ( time. getFullYear ( ) ) ;
console. log ( time. getMonth ( ) ) ;
console. log ( time. getDate ( ) )
console. log ( time. getHours ( ) )
console. log ( time. getMinutes ( ) )
console. log ( time. getSeconds ( ) )
console. log ( time. getDay ( ) )
console. log ( time. getTime ( ) )
2.2、获取时间(全)
标识 方法 描述 年月日周 toDateString()
以美式英语和人类易读的表述形式返回一个 Date 对象日期部分的字符串。 时间 toJSON()
YYYY-MM-DDTHH:mm:ss.sssZ 年月日 toLocaleDateString()
该字符串格式因不同语言而不同 时间 toLocaleString()
该字符串格式因不同语言而不同 时分秒 toLocaleTimeString()
该字符串格式因不同语言而不同 时间 toString()
转字符串 时分秒 toTimeString()
转字符串 时间 toUTCString()
使用 UTC 时区
var time = new Date ( '2019-02-13T08:00:22' ) ;
console. log ( time. toDateString ( ) ) ;
console. log ( time. toJSON ( ) ) ;
console. log ( time. toLocaleDateString ( ) )
console. log ( time. toLocaleString ( ) )
console. log ( time. toLocaleTimeString ( ) )
console. log ( time. toString ( ) )
console. log ( time. toTimeString ( ) )
console. log ( time. toUTCString ( ) )
三、时间差
是指获取两个时间点之间相差的时间 在 js 中是不能用时间直接做 减法 的 我们需要一些特殊的操作 在编程的世界里面,有一个特殊的时间,是 1970年01月01日00时00分00秒
这个时间我们叫做 格林威治时间 所有的编程世界里面,这个时间都是一样的,而且 格林威治时间 的数字是 0 从 格林威治时间 开始,每经过1毫秒,数字就会 + 1 所以我们可以获取到任意一个时间节点到 格林威治时间 的毫秒数 然后在用两个毫秒数相减,就能得到两个时间点之间相差的毫秒数 我们在通过这个毫秒数得到准确的时间
3.1、计算时间差
例如:我们现在计算一下 2019-01-01 00:00:00
到 2019-01-03 04:55:34
的时间差
先获取两个时间点到格林威治时间
的毫秒数
var time1 = new Date ( '2019-01-01 00:00:00' ) ;
var time2 = new Date ( '2019-01-03 04:55:34' ) ;
time1 = time1. getTime ( ) ;
time2 = time2. getTime ( ) ;
console. log ( time1) ;
console. log ( time2) ;
两个时间相减,得到两个时间点之间相差的毫秒数
var differenceTime = time2 - time1;
console. log ( differenceTime) ;
把我们计算的毫秒数换算成时间
先计算出有多少天 以一天是1000 * 60 * 60 *24
毫秒 用总的毫秒数除以一天的毫秒数,就能得到多少天了
var day = differenceTime / ( 1000 * 60 * 60 * 24 ) ;
day = Math. floor ( day) ;
使用differenceTime
减去两天所包含的毫秒数,剩下的就是不够一天的毫秒数 用不够一天的毫秒数计算出有多少个小时 因为一个小时是24*60*60*1000
毫秒 用不够一天的毫秒数除以一小时的毫秒数,就能得到多少小时了
var afterHours = differenceTime- ( 100 * 60 * 60 * 24 * day) ;
var hours = afterHours / ( 60 * 60 * 1000 ) ;
huors = Math. floor ( huors) ;
同理,使用afterHours
-4个小时包含的毫秒数,剩下的就是不足一个小时的毫秒数 用不够一个小时的毫秒数计算出有多少分钟 因为一分钟是60 * 1000
毫秒 用不够一个小时的毫秒数除以一分钟的毫秒数就能得到多少分钟了
var afterMinutes = afterHours - ( 1000 * 60 * 60 * huors) ;
var minutes = afterMinutes / ( 1000 * 60 ) ;
minutes = Math. floor ( minutes) ;
var afterSeconds = afterMinutes - ( 1000 * 60 * minutes) ;
var seconds = afterSeconds / 1000 ;
seconds = Math. floor ( seconds) ;
var milliSeconds = afterSeconds - ( 1000 * seconds)
var time1 = new Date ( '2019-01-01 00:00:00' ) ;
var time2 = new Date ( '2019-01-03 04:55:34' ) ;
time1 = time1. getTime ( ) ;
time2 = time2. getTime ( ) ;
var differenceTime = time2 - time1;
var day = differenceTime / ( 1000 * 60 * 60 * 24 ) ;
day = Math. floor ( day) ;
var afterHours = differenceTime- ( 100 * 60 * 60 * 24 * day) ;
var hours = afterHours / ( 60 * 60 * 1000 ) ;
huors = Math. floor ( huors) ;
var afterMinutes = afterHours - ( 1000 * 60 * 60 * huors) ;
var minutes = afterMinutes / ( 1000 * 60 ) ;
minutes = Math. floor ( minutes) ;
var milliSeconds = afterSeconds - ( 1000 * seconds)
document. write ( '2019-01-01 00:00:00 和 2019-01-03 04:55:34 之间相差' )
document. write ( day + '天' + hours + '小时' + minutes + '分钟' + seconds + '秒' + milliSeconds + '毫秒' )
3.2、获取时间差
Date.now()
:返回自 1970 年 1 月 1 日 00:00:00 (UTC)
到当前时间的毫秒数它相当于 new Date().getTime()
,但它不会创建中间的 Date 对象。 因此它更快,而且不会对垃圾处理造成额外的压力。
let start = Date. now ( ) ;
for ( let i = 0 ; i < 100000 ; i++ ) {
let doSomething = i * i * i;
}
let end = Date. now ( )
let elapsed = end - start;
let start = new Date ( ) ;
for ( let i = 0 ; i < 100000 ; i++ ) {
let doSomething = i * i * i;
}
let end = new Date ( )
let elapsed = end. getTime ( ) - start. getTime ( ) ;