- Math 是 js 的一個(gè)內(nèi)置對(duì)象,提供了一堆的方法幫助我們操作 數(shù)字
- Date 是 js 的一個(gè)內(nèi)置對(duì)象,提供了一堆的方法幫助我們操作 時(shí)間
Math
- 沒有什么多余的東西,就是一堆的方法來操作數(shù)字
random
Math.random()這個(gè)方法是用來生成一個(gè)0 ~ 1之間的隨機(jī)數(shù)每次執(zhí)行生成的數(shù)字都不一樣,但是一定是
0 ~ 1之間的-
生成的數(shù)字包含 0 ,但是不包含 1
var num = Math.random() console.log(num) // 得到一個(gè)隨機(jī)數(shù)
round
-
Math.round()是將一個(gè)小數(shù) 四舍五入 變成一個(gè)整數(shù)var num = 10.1 console.log(Math.round(num)) // 10 var num2 = 10.6 console.log(Math.round(num2)) // 11
abs
-
Math.abs()是返回一個(gè)數(shù)字的 絕對(duì)值var num = -10 console.log(math.abs(num)) // 10
ceil
-
Math.ceil()是將一個(gè)小數(shù) 向上取整 得到的整數(shù)var num = 10.1 console.log(Math.ceil(num)) // 11 var num2 = 10.9 console.log(Math.ceil(num2)) // 11
floor
-
Math.floor()是將一個(gè)小數(shù) 向下取整 的到的整數(shù)var num = 10.1 console.log(Math.floor(num)) // 10 var num2 = 10.9 console.log(Math.floor(num2)) // 10
max
-
Math.max()得到的是你傳入的幾個(gè)數(shù)字之中 最大 的那個(gè)數(shù)字console.log(Math.max(1, 2, 3, 4, 5)) // 5
min
-
Math.min()得到的是你傳入的幾個(gè)數(shù)字之中 最小 的那個(gè)數(shù)字console.log(Math.min(1, 2, 3, 4, 5)) // 1
PI
-
Math.PI得到的是π的值,也就是3.1415926...console.log(Math.PI) // 3.141592653589793- 因?yàn)橛?jì)算機(jī)的計(jì)算精度問題,只能得到小數(shù)點(diǎn)后 15 位
強(qiáng)化練習(xí)1
-
編寫一個(gè)函數(shù),能夠獲得一個(gè)隨機(jī)的 0 ~ 255 之間的數(shù)字
function getNum() { // code in here ... } var num = getNum() // 要求 num 的值在 1 ~ 255 之間(包含 1 和 255) 編寫一個(gè)函數(shù),獲得一個(gè)十六進(jìn)制的隨機(jī)顏色的字符串(例如:#20CD4F)
Date
-
js提供的內(nèi)置構(gòu)造函數(shù),專門用來獲取時(shí)間的
new Date()
-
new Date()在不傳遞參數(shù)的情況下是默認(rèn)返回當(dāng)前時(shí)間var time = new Date() console.log(time) // 當(dāng)前時(shí)間 Fri Mar 01 2019 13:11:23 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間) -
new Date()在傳入?yún)?shù)的時(shí)候,可以獲取到一個(gè)你傳遞進(jìn)去的時(shí)間var time = new Date('2019-03-03 13:11:11') console.log(time) // Sun Mar 03 2019 13:11:11 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間) -
new Date()傳遞的參數(shù)有多種情況-
傳遞兩個(gè)數(shù)字,第一個(gè)表示年,第二個(gè)表示月份
var time = new Date(2019, 00) // 月份從 0 開始計(jì)數(shù),0 表示 1月,11 表示 12月 console.log(time) // Tue Jan 01 2019 00:00:00 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間) -
傳遞三個(gè)數(shù)字,前兩個(gè)不變,第三個(gè)表示該月份的第幾天,從 1 到 31
var time = new Date(2019, 00, 05) console.log(time) // Sat Jan 05 2019 00:00:00 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間) -
傳遞四個(gè)數(shù)字,前三個(gè)不變,第四個(gè)表示當(dāng)天的幾點(diǎn),從 0 到 23
var time = new Date(2019, 00, 05, 22) console.log(time) // Sat Jan 05 2019 22:00:00 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間) -
傳遞五個(gè)數(shù)字,前四個(gè)不變,第五個(gè)表示的是該小時(shí)的多少分鐘,從 0 到 59
var time = new Date(2019, 00, 05, 22, 33) console.log(time) // Sat Jan 05 2019 22:33:00 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間) -
傳遞六個(gè)數(shù)字,前五個(gè)不變,第六個(gè)表示該分鐘的多少秒,從 0 到 59
var time = new Date(2019, 00, 05, 22, 33, 55) console.log(time) // Sat Jan 05 2019 22:33:55 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間) -
傳入字符串的形式
console.log(new Date('2019')) // Tue Jan 01 2019 08:00:00 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間) console.log(new Date('2019-02')) // Fri Feb 01 2019 08:00:00 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間) console.log(new Date('2019-02-03')) // Sun Feb 03 2019 08:00:00 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間) console.log(new Date('2019-02-03 13:')) // Sun Feb 03 2019 13:00:00 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間) console.log(new Date('2019-02-03 13:13:')) // Sun Feb 03 2019 13:13:00 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間) console.log(new Date('2019-02-03 13:13:13')) // Sun Feb 03 2019 13:13:13 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間)
-
將日期字符串格式化成指定內(nèi)容
- 比如我們得到的時(shí)間字符串是
Sun Feb 03 2019 13:13:13 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間) - 我指向得到這個(gè)日期中是那一年,我們就要靠截取字符串的形式得到
- 但是現(xiàn)在
js為我們提供了一系列的方法來得到里面的指定內(nèi)容
getFullYear
-
getFullYear()方式是得到指定字符串中的哪一年var time = new Date(2019, 03, 03, 08, 00, 22) console.log(time.getFullYear()) // 2019
getMonth
-
getMonth()方法是得到指定字符串中的哪一個(gè)月份var time = new Date(2019, 03, 03, 08, 00, 22) console.log(time.getMonth()) // 3- 這里要有一個(gè)注意的地方
- 月份是從 0 開始數(shù)的
- 0 表示 1月,1 表示 2月,依此類推
getDate
-
getDate()方法是得到指定字符串中的哪一天var time = new Date(2019, 03, 03, 08, 00, 22) console.log(time.getDate()) // 3
getHours
-
getHours()方法是得到指定字符串中的哪小時(shí)var time = new Date(2019, 03, 03, 08, 00, 22) console.log(time.getHours()) // 8
getMinutes
-
getMinutes()方法是得到指定字符串中的哪分鐘var time = new Date(2019, 03, 03, 08, 00, 22) console.log(time.getMinutes()) // 0
getSeconds
-
getSeconds()方法是得到指定字符串中的哪秒鐘var time = new Date(2019, 03, 03, 08, 00, 22) console.log(time.getSeconds()) // 22
getDay
-
getDay()方法是得到指定字符串當(dāng)前日期是一周中的第幾天(周日是 0,周六是 6)var time = new Date(2019, 03, 08, 08, 00, 22) console.log(time.getDay()) // 1
getTime
-
getTime()方法是得到執(zhí)行時(shí)間到格林威治時(shí)間的毫秒數(shù)var time = new Date(2019, 03, 08, 08, 00, 22) console.log(time.getTime()) // 1554681622000
獲取時(shí)間差
- 是指獲取兩個(gè)時(shí)間點(diǎn)之間相差的時(shí)間
- 在 js 中是不能用時(shí)間直接做 減法 的
- 我們需要一些特殊的操作
- 在編程的世界里面,有一個(gè)特殊的時(shí)間,是
1970年01月01日00時(shí)00分00秒 - 這個(gè)時(shí)間我們叫做
格林威治時(shí)間 - 所有的編程世界里面,這個(gè)時(shí)間都是一樣的,而且
格林威治時(shí)間的數(shù)字是 0 - 從
格林威治時(shí)間開始,每經(jīng)過1毫秒,數(shù)字就會(huì) + 1 - 所以我們可以獲取到任意一個(gè)時(shí)間節(jié)點(diǎn)到
格林威治時(shí)間的毫秒數(shù) - 然后在用兩個(gè)毫秒數(shù)相減,就能得到兩個(gè)時(shí)間點(diǎn)之間相差的毫秒數(shù)
- 我們?cè)谕ㄟ^這個(gè)毫秒數(shù)得到準(zhǔn)確的時(shí)間
計(jì)算時(shí)間差
- 例如:我們現(xiàn)在計(jì)算一下
2019-01-01 00:00:00到2019-01-03 04:55:34的時(shí)間差
-
先獲取兩個(gè)時(shí)間點(diǎn)到
格林威治時(shí)間的毫秒數(shù)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) // 1546272000000 console.log(time2) // 1546462534000 -
兩個(gè)時(shí)間相減,得到兩個(gè)時(shí)間點(diǎn)之間相差的毫秒數(shù)
var differenceTime = time2 - time1 console.log(differenceTime) // 190534000- 現(xiàn)在我們計(jì)算出了兩個(gè)時(shí)間點(diǎn)之間相差的毫秒數(shù)
定時(shí)器
setInterval(func,time)
有兩個(gè)參數(shù),第一個(gè)參數(shù)是一個(gè)函數(shù),第二個(gè)參數(shù)是時(shí)間間隔,單位是毫秒
每間隔time毫秒,會(huì)執(zhí)行一次函數(shù)
setInterval的返回值是一個(gè)數(shù)字
function box(){
console.log(1)
}
var timer = setInerval(box,1000);
上面代碼意思是,每間隔1000毫秒,box函數(shù)執(zhí)行一次。
取消定時(shí)器的執(zhí)行
如果想要取消定時(shí)器的執(zhí)行我們需要拿到setInerval定時(shí)器函數(shù)的返回值,調(diào)用clearInterval,清除定時(shí)器
clearInterval(timer),調(diào)用之后box函數(shù)就不會(huì)再執(zhí)行了!
強(qiáng)化練習(xí)2
將日期格式化輸出 “2015|01|24”
判斷兩個(gè)日期相差的天數(shù)
獲得N天以后的日期
日期函數(shù)封裝(dateUtil.js)(封裝常見的功能)a
強(qiáng)化練習(xí)3
數(shù)碼時(shí)鐘(見圖)