相信点进来的小伙伴都是想学Math对象和日期对象的吧,接下来就让我来为大家详细说一下吧。希望能够帮助到大家更好的理解。
一、Math对象
Math是一个内置对象,具有数学常数和函数的属性和方法。
1、Math对象的使用
Math对象用来对数字进行与数学相关的运算,该对象不是构造函数,不需要实例化对象,可以直接使用静态属性和静态方法。Math对象常用属性和方法如下:
下面我们通过具体代码演示Math对象方法的使用。读者可以直接在控制台中执行以下代码,查看返回的结果。
Math.PI; //获取圆周率
Math.abs(-25); //获取绝对值,返回结果:25
Math.PI; //获取绝对值,自动转换为数字,返回结果:25
Math.PI; //获取最大值,返回结果:9
Math.PI; //获取最小值,返回结果:2
Math.PI; //获取2的4次幂,返回结果:16
Math.PI; //获取9的平方根,返回结果:3
Math.PI; //向上取整,返回结果:2
Math.PI; //向上取整,返回结果:2
Math.PI; //向下取整,返回结果:1
Math.PI; //向下取整,返回结果:1
Math.PI; //四舍五入,返回结果:1
Math.PI; //四舍五入,返回结果:2
Math.PI; //四舍五入,返回结果:2
Math.PI; //四舍五入,返回结果:-1(取最大值)
Math.PI; //四舍五入,返回结果:-2
2、生成指定范围的随机数
在Math对象中是使用random()来获取随机数,即Math.random(),每次调用该方法的返回结果不同。该方法返回的结果是一个很长的浮点数,如"0.925045617789475",其范围是0~1(不包括1).
正因为返回的是很长的浮点数,所以我们不太常用这个Math.random(),但是我们可以借助一些数学公式来转换成任意范围类的随机数,公式为“Math.random()*(max-min)+min”,表示生成大于或等于min且小于max的随机值。示例代码如下。
Math.random() * ( 3 - 1 ) + 1; //1 <= 返回结果 < 3
Math.random() * ( 20 - 10 ) + 10; //10 <= 返回结果 < 20
Math.random() * ( 99 - 88 ) + 88; //88 <= 返回结果 < 99
上述代码的返回结果是浮点数,当需要获取整数结果时,可以搭配Math.floor()来实现。下面我们通过代码演示如何获取1~3范围内的随机整数,返回结果可能是1、2、3。
funcation getRandom(min, max){
return Math.floor(Math.random() * (max - min + 1) + min);
}
console.log(getRandom(1,3)); //最小值1,最大值3
还可以使用Math.floor(Math.random() * (max + 1))表示生成0到max之间的随机整数,使用Math.floor(Math.random() * max + 1)表示生成1到max之间的随机整数。
3、【案例】猜数字的游戏
接下来我们通过一个案例来演示Math对象的使用。程序随机生成一个1~10之间的数字,用户输入所猜数字(1~10以内),系统判断这两个数字的大小。如果用户没有输入数字,则提示“出错啦!!!”,如果用户所猜数字大于随机数,那么提示“你猜大了!”,如果用户所猜数字小于随机数,则提示“你猜小了!”,如果用户所猜数字与该随机数相等,就提示“恭喜你,猜对了!”,此时结束程序。
案例的具体代码如下。
function getRandom(min,max){
return Math.floor(Math.random()*(max-min+1)+min);
}
var random = getRandom(1,10);
while(true)
{
var num = prompt("请输入你猜的数字,范围在1~10之间:");
if (num > random)
{
alert("你猜大了!");
}
else if (num < random)
{
alert("你猜小了!");
}
else
{
alert("恭喜你,猜对了!");
break;
}
}
二、日期对象
Javascript中的日期对象用来处理日期和时间。例如,秒杀活动中日期的实时显示、时钟效果、在线日历。接下来将对日期对象进行详细讲解。
1、日期对象的使用
Javascript中的日期对象需要使用new Date()实例化对象才能使用,Date()是日期对象的构造函数。在创建日期对象时,可以为Date()构造函数传入一些参数,来表示具体的日期,其创建方式如下。
//方式1:没有参数,使用当前系统的当前时间作为对象保存的时间
var date1 = new Date();
//输出结果:Wed Nov 17 2021 14:59:56 GMT+0800 (中国标准时间)
console.log(date1);
//方式2:传入年、月、日、时、分、秒(月的范围是0~11,即真实月份-1)
var date2 = new Date(2023, 10, 16, 19, 30, 45);
//输出结果:Sat Nov 18 2023 19:30:45 GMT+0800(中国标准时间)
console.log(date2);
//方式3:用字符串表示日期和时间
var date3 = new Date(2023-10-16 19:30:15);
// 输出结果:Wed Oct 16 2019 19:30:15 GMT+0800(中国标准时间)
consloe.log(date3);
在获取到日期对象后,直接输出对象得到的是一个字符串表示的日期和时间。如果想要用其他格式来表示这个日期和时间,可以通过调用日期对象的相关方法方法来实现。日期对象的常用方法分为get和set两大类,分别如下所示。
Date对象的常用get方法
Date对象的常用set方法
下面我们通过具体代码演示Date对象的使用,在控制台中输出当前日期。
var date = new Date(); // 基于当前日期时间创建Date对象
var year = date.getFullYear(); //获取年
var month = date.getMonth() + 1; //获取月,范围为0~ 11 (0表示一月, 1表示二月,依次类推)
var day = date.getDate(); //获取日
//通过数组将星期值转换为字符串
var week = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
//输出date对象保存的时间,示例:今天是2021年11月17日星期三
console.log('今天是' + year + '年'+ month + '月'+ day + '日' + week[date.getDay()]);
在开发中,我们还经常需要将日期对象中的时间转换成指定的格式,示例代码如下。
//返回当前时间,格式为:时:分:秒,用两位数字表示
function getTime() {
var time = new Date();
var h = time.getHours();
h = h<10 ? '0'+ h:h;
var m = time.getMinutes();
m = m<10 ? '0'+ m:m;
var s = time.getSeconds();
s = s<10 ? '0' + s:s;
return h +':'+ m +':'+ s;
}
console.log(getTime()); //输出结果示例: 15:06:55
这段代码中?用来判断给定数字是否为一位数,如果是一位数则在前面加上“0”
2、【案例】统计代码执行时间
通过日期对象可以获取从1970年1月1日0时0分0秒开始一直到当前UTC时间所经过的毫秒数,这个值可以作为时间戳来使用。通过时间戳,可以计算两个时间之间的时间差,还可用于加密、数字签名等技术。获取时间戳的方式如下。
//方式1:通过日期对象的vauleOf()或getTime()方法
var date1 = new Date();
consloe.log(date1.valueOf()); //示例结果:1571196996188
consloe.log(date1.getTime()); //示例结果:1571196996188
//方法2:使用“+”运算符转换为数值型
var date2 = +new Date();
consloe.log(date2); //示例结果:1571196996190
//方法3:使用HTML5新增的Date.now()方法
consloe.log(Date.now()); //示例结果:1571196996190
在掌握如何获取到时间戳后,下面我们来完成案例的代码编写,具体代码如下。
var timetamp1 = +new Date();
for(var i = 1, str = ''; i <= 90000; i++){
str += i;
}
var timetamp2 = +new Date();
//示例结果:代码执行时间:14毫秒
console.log('代码执行时间:' + (timetamp2 - timetamp1) + '毫秒');
3、【案例】倒计时
在一些商业活动网站上经常会出现该商品打折活动还有多久结束,像这样的倒计时效果就可以用日期对象来实现。
倒计时的核心算法是输入时间减去现在的时间,得出剩余的时间就是要显示的倒计时的时间,这需要把时间都转换成时间戳来进行计算,把得到的毫秒数转换为天数、小时、分钟、秒数。具体代码如下。
function countDown(time) {
var nowTime = +new Date(); // 返回的是当前时间总的毫秒数
var inputTime = +new Date(time); // 返回的是用户输入时间总的毫秒数
var times = (inputTime - nowTime) / 1000; // times是剩余时间总的秒数
var d = parseInt(times / 60 / 60 / 24); // 把秒数转换成天数 (parselnt把得到 的数转换为整数)
d = d < 10 ? '0' + d : d;//这里为了让时间数好看一点,比如把4天改成04天,所以加了三元判定,下面也是如此;
var h = parseInt(times / 60 / 60 % 24); //时
h = h < 10 ? '0' + h : h;
var m = parseInt(times / 60 % 60); //分
m = m < 10 ? '0' + m : m;
var s = parseInt(times % 60); // 秒
s = s < 10 ? '0' + s : s;
return d + '天' + h + '时' + m + '分' + s + '秒'; //返回函数计算出的值
}
console.log(countDown('这里输入你需要计算的时间')); //在控制台输出你输入时间与你电脑时间的差值就是倒计时;
var date = new Date(); //获取你电脑当前的时间;
console.log(date); //在控制台输出你当前电脑时间;