JavaScript 数字和时间

数字

JavaScript中的数字都是双精度浮点型

除了浮点数外,数字还可以表示全局属性-Infinity +InfinityNaN

表示

进制表示

数字可以用二进制,八进制,十进制和十六进制表示

  • 二进制(Binary numbers))

    0b(binary)开头

    console.log(0b1001); // 9

  • 八进制(Octal numbers)

    以0o(Octal)开头

    console.log(0o1001); //513

    只用前缀0也可以表示八进制,且被所有浏览器支持

    console.log(01001); //513

  • 十进制(Decimal numbers)

  • 十六进制(Hexadecimal numbers)

    0x开头

    console.log(0x1001); //4097

指数表示

console.log(2E2); //200 2*10的二次方

console.log(-1111E111111111111); // -Infinity

  • 发生下溢会返回-Infinity

console.log(1111E111111111111); // Infinity

  • 发生上溢时返回+Infinity

数字对象

数字对象中定义了一些可以用于常量表示的属性和与数字有关的方法

属性

可用于常量表示的属性命名格式为大写字母加下划线,不同于变量命名的驼峰命名

console.log(Number.MAX_VALUE); // 可表示的最大值
console.log(Number.MIN_VALUE); // 可表示的最小值
console.log(Number.MAX_SAFE_INTEGER); // 最大安全整数
console.log(Number.MIN_SAFE_INTEGER); // 最小安全整数
console.log(isNaN(Number.NaN)); //true
console.log(Number.NaN === NaN); // false

NaN 只能用函数isNaN()判断,与其他数据类型做比较都会返回false,即使是与其本身

方法

与数字对象的类型判断和类型转换有关

Number.parseInt(a)

  • 将一个字符串解析为整数
  • 与全局方法parseInt(a)相同

Number.parseFloat(a)

  • 将一个字符串解析为浮点数
  • 与全局方法parseFloat(a)相同

Number.isInteger(a)

  • 判断传递的值是否为整数

Number.isNaN(a)

  • 判断传递的数值是否是NaN
  • 与全局方法isNaN()相同
 let a = '111.111';
console.log(Number.parseFloat(a)); // 111.111

console.log(Number.parseInt(a)); //111
console.log(parseInt(a));
console.log(Number.isInteger(a)); //false
console.log(Number.isInteger(Number.parseInt(a))); // true
console.log(Number.isInteger(Number.parseFloat(a))); // false
console.log(Number.isNaN(Number.NaN)); // true

数学对象

定义了许多与数字运算有关的方法

console.log(Math.PI);
console.log(Math.sin(0.5)); // 计算sin值
console.log(Math.abs(-1)); //1 取绝对值

console.log(Math.floor(2.5)); // 2  向下取整
console.log(Math.ceil(2.5)); //3   向上取整
console.log(Math.round(2.5)); //3  四舍五入

console.log(Math.min(1, 2, 3, 4)); // 1  取最小值,这里的参数不能为数组
console.log(Math.max(1, 2, 3, 4)); //4   取最大值,参数不能为数组
console.log(Math.random()); //返回0和1之间的随机数

console.log(Math.sqrt(4)); // 开方

日期对象

对象中并没有任何属性可供使用,但可以通过大量的方法获取和设置时间

JavaScript中并没有日期数据类型

构造时间

西方人习惯将星期日作为一个星期的开始,0表示星期日,1表示星期一,依此类推

月份的表示为0-11,0代表一月份,则10月份为11,依此类推

无参数创建当前时间

let now = new Date(); // 无参数创建当前时间

传递年份和月份

new Date(2019, 10); // Fri Nov 01 2019 00:00:00 -> 2019.11.1 默认为1号

传递年月日

new Date(2019, 10, 2); // Sat Nov 02 2019 00:00:00 -> 2019.11.2

传递时分秒

new Date(2019, 10, 2, 10, 10, 10); // Sat Nov 02 2019 10:10:10 -> 2019.10.2 10:10:10

传递毫秒

不能单独传递年份,因为只传入一个参数会被认为是时间戳

时间戳是自1970年1月1日 零时零分零秒开始至现在的总毫秒数,全球统一

new Date(0) // Thu Jan 01 1970 08:00:00 GMT+0800 (中国标准时间)

new Date(1546304949000); // Tue Jan 01 2019 09:09:09 GMT+0800 (中国标准时间)

中国标准时间即北京时间,所以以上转换都被加上了八个小时

获取时间

get 获取Date对象日期和时间的值

通过get可以获取年月日时分秒和星期

let now = new Date();
console.log(now.getDay()); // 0是代表星期日,1代表星期一 ...
console.log(now.getFullYear()); // 获取年份
console.log(now.getMonth()); // 获取月份,取值是0-11
console.log(now.getDate());  // 获取日期  返回值为5,今天是五号
console.log(now.getHours());  // 获取小时
console.log(now.getMinutes());  // 获取分钟
console.log(now.getSeconds());  // 获取秒数
console.log(now.getTime());  // 获取时间戳

设置时间

set可以分别设置年月日时分秒

无法通过set去设置星期,因为星期是自动设置的

now.setFullYear(2021); // 设置年份
now.setMonth(10); // 设置月份
now.setDate(1); // 设置日期 10月1号
now.setHours(1); // 设置小时
now.setMinutes(2); // 设置分钟
now.setSeconds(10); // 设置秒数

时间解析

to

to可以返回Date对象的字符串格式的值

获取本地格式的时间

now.toDateString() // Mon Nov 01 2021
console.log(now.toLocaleDateString());  //  2021/11/1
console.log(now.toLocaleTimeString()) // 上午1:02:10
console.log(now.toLocaleString()); // 2021/11/1 上午1:02:10

返回值皆为字符串

parse

Date.parse()方法可以解析一个字符串格式的Date时间,返回时间戳

let str = '2019 01 01';
let str2 = '2019 01 01 09:09:09';
console.log(Date.parse(str)); // 1546272000000
console.log(new Date(Date.parse(str2)).getFullYear()); // 2019
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值