美文网首页
第十四节: JavaScript日期对象和数学对象

第十四节: JavaScript日期对象和数学对象

作者: 时光如剑 | 来源:发表于2020-10-11 19:56 被阅读0次

一. Math对象

一般用来执行js中的数学运算

Math对象的方法

Math.PI 圆周率

Math.random() 获取随机数字 [0,1)

Math.min(a,b) a和b中取小值

Math.max(a,b) a和b中取大值

Math.ceil(x) 把x上取整

Math.floor(x) 把x下取整

Math.round(x) 把x四舍五入

Math.abs(x) 取x的绝对值

Math.sin(x) 求x的正弦值

Math.cos(x) 求x的余弦值

Math.tan(x) 求x的正切值

Math.pow(x,y) 求x的y次方

Math.sqrt(x) 求x的平方根

1. Math对象

Math是js的内置对象,可以直接使用,

检测Math是不是一个对象

console.log(typeof Math);

2.方法的使用

2.1 常用属性方法
// 获取圆周率 Math的属性PI
console.log(Math.PI);   

// Math的方法
// 1.随机数[0,1)
console.log(Math.random());

// 2.获取最小值,返回参数最小值
// 如果传入的参数不是数字类型,会转为数字类型,转不了也就比不来最小返回NaN
// 可以传一个参数
// 不传参为Infinity
console.log(Math.min(10,20,30,50))

// 3.获取最大值,返回参数最大值
// 可以传一个参数
// 不传参为-Infinity
console.log(Math.max(10,20,30,50));

// 4.向上取整
// 正常返回整数
// 接受一个参数,如果有多个参数,自动忽略后面的
// 如果传入的不是数字类型,隐式转换数字类型,转不了NaN
// 不传参,返回NaN
console.log(Math.ceil(2.3));

// 4.向下取整
// 正常返回整数
// 接受一个参数,如果有多个参数,自动忽略后面的
// 如果传入的不是数字类型,隐式转换数字类型,转不了NaN
// 不传参,返回NaN
console.log(Math.floor(2.3));

// 5.四舍五入
// 正常返回整数
// 接受一个参数,如果有多个参数,自动忽略后面的
// 如果传入的不是数字类型,隐式转换数字类型,转不了NaN
// 不传参,返回NaN
console.log(Math.round(2.3));

// 6.绝对值
// 正常返回正数
// 接受一个参数,如果有多个参数,自动忽略后面的
// 如果传入的不是数字类型,隐式转换数字类型,转不了NaN
// 不传参,返回NaN
console.log(Math.abs(2.3));
2.2 其他方法
// 1. 求正弦值 
// Math.sin(弧度值)
console.log(Math.sin(Math.PI/6));

// 2. 求余弦值 
// Math.cos(弧度值)
console.log(Math.cos(Math.PI/6));

// 3. 求正切
// Math.tan(弧度值)
console.log(Math.tan(Math.PI/6));

// 4. x的y次幂
// Math.pow(x,y)    x的y次方
// 接受两个参数,传入多个忽略后面的
// 只传一个参数或不传就是NaN
// x,y支持负数
console.log(Math.pow(x,y));

// 4. 开方
// Math.sqrt(x)  
// 接受一个参数,传入多个忽略后面的
// 其他数据类型会转数字类型,转不了为NaN
// 不传就是NaN
console.log(Math.sqrt(x) );

例子:

四位随机验证码

function unique(){
    var str = "0123456789abcdefghijklmnopqrstuvwsyzABCDEFGHIJKLMNOPQRSTUVWSYZ";
    var newStr = ""
    for(var i = 0; i < 4; i++){
        newStr += str[parseInt(Math.random()*str.length)];
    }
    return newStr;
}
function unique(){
    var str = "0123456789abcdefghijklmnopqrstuvwsyzABCDEFGHIJKLMNOPQRSTUVWSYZ";
    var newStr = ""
    for(var i = 0; i < 4; i++){
        var randow = parseInt(Math.random()*str.length);
        if(newStr.indexOf(str[randow]) !== -1){
            i--;
            continue;
        }else{
            newStr += str[randow];
        }
        
    }
    return newStr;
}

二. 日期对象 Date

日期对象是JS中提供的用于控制年份.日期.时间.的对象

1. 创建日期对象

Date是js内置的构造函数,使用前,先通过new操作符构造一个日期对象出来

var date = new Date();  
console.log(date);   // Fri Apr 26 2019 15:14:55 GMT+0800 (中国标准时间)

注意,这个获取时间不是实时的,是将此时此刻你获取的时间拍照报存在变量date中

2. 优化获取的时间

date.toLocaleString() ==> 获取本地日期字符串
date.toLocaleDateString() ==> 获取本地(年/月/日)形式的字符串
date.toLocaleTimeString() ==> 获取本地(时/分/秒)形式的字符串

2.1 本地日期格式
date.toLocaleString();     // "2019/4/26 下午3:17:33"
date.toLocaleDateString(); // "2019/4/26"
date.toLocaleTimeString(); // "下午3:17:33"

3. 日期对象的方法

3.1 日期对象的获取方法

date.getFullYear() ==>获取年份

date.getMonth() ==>获取月份 (0-11)

date.getDate() ==>获取日 (1-31)

date.getHours() ==>获取小时

date.getMinutes ==>获取分钟

date.getSeconds ==>获取秒钟

date.getMilliseconds ==>获取毫秒

date.getDay() ==>获取星期几 (0-6) 星期天是0

date.getTime() ==>获取当前时间到1970年1月1日午夜的毫秒数

date.getTimezoneOffset() ==> 获取当前时区的偏移时间 东8区是-480

// 1. 获取年份
date.getFullYear();   //2019

// 2. 获取月份
// 注意,月份的计数是从0开始的的,也就是1月份的数字为0,
// 所以获取月份数字后加1才是真正的月份
date.getMonth() + 1;    // 3 + 1 = 4  ,

// 3. 获取日期
date.getDate();   // 26

// 4. 获取小时
date.getHours();      // 10

// 5. 获取分钟
date.getMinutes();      // 30

// 6. 获取秒数
date.getSeconds();      // 20

// 7. 获取毫秒数
date.getMilliseconds();      // 862

// 8. 获取星期几
date.getDay();         //  5

// 9. 获取时间戳
date.getTime();       //1556264444841(1970年1月1日0时0分0秒到现在的毫秒数)

// 10. 获取格林威治时间与本地时间相差的分钟数
date.getTimezoneOffset();  // -480 时区便宜,我们是东八区
// 查看格林威治时间
date.setHours(date.getHours() + date.getTimezoneOffset()/60);
date.toLocaleString();
3.2 设置时间的方法

date.setFullYear() ==>设置年份

date.setMonth() ==>设置月份 (0-11)

date.setDate() ==>设置日 (1-31)

date.setHours() ==>设置小时

date.setMinutes() ==>设置分钟

date.setSeconds() ==>设置秒钟

date.setMilliseconds() ==>设置毫秒

// 1. 设置日期的年份
date.setFullYear(2017);     // 返回时间戳

// 2. 设置月份
// 注意如果你传入的参数大于11,将会减掉11,加一年,然后身下的在修改月份
date.setMonth(10);         // 返回时间戳 
例子:

每隔一秒将当前时间打印子控制台上

setInterval(function(){
    var date = new Date();
    var YY = date.getFullYear();   //2019
    var MM = date.getMonth() + 1;
    var DD =  date.getDate();  
    var hh = date.getHours(); 
    var mm = date.getMinutes();    
    var ss = date.getSeconds();  
    console.log('现在的时间时'+YY+'年'+MM+'月'+DD+'日'+hh+'时'+mm+'分'+ss+'秒');
},1000)

4. 获取指定的时间

var date = new Date(参数) ==>获取指定时间
参数形式 ==>2019,1,5 2019年2月5日

// 获取指定的时间
var date = new Date(2019,1,5)   
var date = new Date('2019-05-27 20:30:25');
var date = new Date('2019/05/27 20:30:25');

5. 获取两个时间戳相差的毫秒数

两个时间戳相减是毫秒数

var date = new Date(2020,0,25);
var now = new Date();
var _date = date - now;     // _date的值是毫秒数
5.1 距离过年的时间
// 距离过年的天,时,分,秒
setInterval(function(){
    var day = Math.floor(_date/(1000*60*60*24));
    var hours = Math.floor(_date/(1000*60*60)%24);
    var minutes = Math.floor(_date/(1000*60)%60);
    var seconds = Math.floor(_date/(1000)%60);
},1000)

// toTwo
function toTwo(num){
    if(num < 10){
        return '0' + num;
    }else{
        return num;
    }
}

相关文章

网友评论

      本文标题:第十四节: JavaScript日期对象和数学对象

      本文链接:https://www.haomeiwen.com/subject/lqeuyktx.html