Math 操作数字的方法
-
都是用来操作数字的方法
-
js 提供的一个内置对象
-
常用方法
random()
产生 0 ~ 1 的随机数,不包含1round()
四舍五入取整ceil()
向上取整floor()
向下取整sqrt()
开平方根pow(底,幂)
取幂max()
取最大值min()
取最小值abs()
取绝对值PI
- 不是方法是属性
- 不用加 ()
- PI 是大写
-
转换进制的方法
toString(要转换的进制数)
- 把一个十进制的数字转换成其他进制
- 返回值是一个 字符串
parseInt(一个数字, 把前面的数字当作几进制)
- 把一个其他进制的数字转换成十进制
- 返回值是一个 数字
-
保留小数的方法
toFixed(要保留几位小数)
- 返回值是一个 字符串
-
区间范围内的随机数字
Math.floor(Math.random() * (大数 - 小数 + 1)) + 小数
Date 操作时间的方法
-
js 提供的一个内置构造函数
-
创建一个时间对象
var time = new Date()
- time 是复杂数据类型
-
创建一个指定日期的时间对象
-
在
new Date()
的时候传递参数 -
传数字(最少两个)
- 年
- 月
- 0 表示 1月,11表示 12月
- 日
- 时
- 分
- 秒
-
传字符串
'2018-12-12 || '2018/12/12''
'2018/12/12 12:12:12'
-
-
获取时间对象中的参数
getFullYear()
getMonth()
getDate()
getHours()
getMinutes()
getSeconds()
getDay()
一周中的第几天getTime()
获取时间戳
-
使用方法设置时间对象的参数
setFullYear()
setMonth()
setDate()
setHours()
setMinutes()
setSeconds()
setTime()
-
时间差的思路
- 两个时间对象的时间戳相减(得到的是ms)
- 拿相差的时间取进行格式化
练习题
<script>
// 把当前时间转换成中文
// 2019/8/27 14:50:12
// 二零一九年八月二十七日 下午 两点五十分十二秒 星期二
/*
1. 格式化数字
+ 格式化年
+ 格式化数字
*/
// 1. 先写一个格式化年的函数
var arr = ['零','一', '二', '三', '四', '五', '六', '七', '八', '九', '十']
function formatYear (n) {
var a = parseInt(n / 1000)
var b = parseInt(n % 1000 / 100)
var c = parseInt(n % 1000 % 100 / 10)
var d = parseInt(n % 10)
console.log(arr[a], arr[b], arr[c], arr[d])
return arr[a] + arr[b] + arr[c] + arr[d] + '年'
}
formatYear(2019)
// 2. 再写一个格式化月份 日期 时 分 秒 这些数字的函数
function formatNumber (n) {
var str = []
if (n <= 10) {
return arr[n]
} else if (n < 20) {
return '十' + arr[n - 10]
} else if (n >= 20 && n % 10 === 0) {
return arr[n / 10] + '十'
} else {
var a = parseInt(n / 10)
var b = parseInt(n % 10)
return arr[a] + '十' + arr[b]
}
}
// 3. 最后写一个总的调用前两个函数的函数来完成目标
function formatTime (time) {
var str = ''
var year = time.getFullYear()
var month = time.getMonth() + 1
var date = time.getDate()
var hours = time.getHours()
var minutes = time.getMinutes()
var seconds = time.getSeconds()
var day = time.getDay()
str += formatYear(year)
str += formatNumber(month) + '月'
str += formatNumber(date) + '日 '
if (hours < 12) {
str += '上午 '
} else {
str += '下午 '
}
if (hours === 12) {
str += formatNumber(hours) + '时'
} else {
str += formatNumber(hours % 12) + '时'
}
str += formatNumber(minutes) + '分'
str += formatNumber(seconds) + '秒 '
if (day === 0) {
str += '星期' + '日'
} else {
str += '星期' + formatNumber(day)
}
return str
}
var time = new Date()
var res2 = formatTime(time)
console.log(res2)
console.log(navigator.platform)
</script>
<script>
// 用之前的计算时间差的方法在页面上计算当前时间到设定时间的时间差
function subTime (t1, t2) {
var str = ''
var msc = parseInt(Math.abs(t1.getTime() - t2.getTime()) / 1000)
// 算多少天
var Day = parseInt(msc / (60 * 60 *24))
// 算多少小时
var Hours = parseInt((msc - (Day * (60 * 60 * 24))) / (60 * 60))
// 算多少分钟
var Minutes = parseInt((msc - (Day * (60 * 60 * 24)) - Hours * 60 * 60) / 60)
// 算多少秒
var Second = msc - (Day * (60 * 60 * 24)) - (Hours * 60 * 60) - (Minutes * 60)
str += Day + '天 '
str += Hours + '小时 '
str += Minutes + '分钟 '
str += Second + '秒 '
// console.log(str)
return str
}
setInterval (function () {
var time1 = new Date()
var time2 = new Date(2020, 10, 30, 20, 30, 40)
var res = subTime(time1, time2)
timeBox.innerText = res
}, 1000)
</script>
</body>