date js 半年_JavaScript Date对象

Date对象

源码下载

最初接触编程,没有接触过非常讲究时间控制的领域,往往对时间没有概念,单片机编程,嵌入式开发,操作系统,无人及姿态控制往往会关注毫秒ms、微秒us级的时间概念。

什么是并行,什么是串行,什么是并发。计算机的CPU是逐条执行指令的,每条指令都要花费一定时间,只不过短小的程序执行的太快,几个毫秒ms,甚至微秒,没有时间的感觉。

本节课利用Javascript内置的对象Date对象,来测试一段代码的执行时间。

Date对象需要通过new和构造函数Date()创建,创建完成后可以调用对象的大量内置默认支持属性和方法。Javascript语言引入Date对象的目的就是为了处理编程中的时间问题,

该对象依赖Javascript程序的运行环境,可以通过浏览器解析或者nodejs解释器。

下面的代码示例是利用Javascript内置对象Date测试程序性能。

//测试for循环100万次计算加法运算时间9 let S =0;10 let T0 =newDate();//创建对象Date,返回此刻时间赋值给变量T0for(let i =0;i<1000;i++){//外循环1000for(let i =0;i<1000;i++){//内循环100013 S +=1;14 }

15 }

16 let T1 =newDate();//创建对象Date,返回此刻时间赋值给变量T117 document.write(T1-T0);//求解T1-T0时间差,便是for运行时间,单位:ms

体验测试

不改变程序多次刷新浏览器查看运行时间变化,是稳定,还是波动。可以尝试更改for循环程序中的循环次数控制参数1000,刷新浏览器查看时间变化。

代码解析

代码比较简单,直接来看第十行创建Date对象的代码let T0 = new Date();执行该语句后,

从对象的角度看创建了一个对象,这样的话可以通过d对象调用Date的相关方法和属性。

该对象也是一个是时间值,这个主要体现在利用运算符运算的时候,比如一个字符串类型数据和数字类型数据进行==比较运算,

Javascript系统会首先把它们转换成同一种数据类型再进行比较,

两个对象进行减法计算,首先要做的就是把对象类型数据转化为数字类型。

可能很多教程说它是时间,那是字符串格式时间,还是数值类型的时间。使用typeof关键字测试他就是对象,

那么对象通过什么样的机制,能够转化成数字类型数据,如果不明白,先不用管,先记住Date的用法。随着学习的深入,尝试去使用各种类型的构造函数自然会明白。

T0是当前的时间,也是一个对象。T0是执行for循环的开始时间,T1是for循环执行结束的时间。

两个变量时间差就是for循环的执行时间,在浏览器网页上显示的时间数值是整数,单位是:ms。

Math对象方法

toString()

执行语句new Date();返回的是一个对象,从数据的角度看,是对象类型数据,值就是时间,Date对象提供了方法toString()可以把对象类型数据

转化为字符串类型数据。

应用案例

//T0对象转字符串

let str = T0.toString();

getDate()

通过该方法可以从对象获得本月第几号的日期,比如今天是3月13号,那么T0.getDate()的返回值是一个数字类型数据13

getMonth()

同getDate()方法使用规则,只是返回的数据是今天的月份。

方法总结表格

方法

返回

数据类型

getHours()

number

getMinutes()

number

getSeconds()

number

getFullYear()

number

getMonth()

number

getDay()

number

扩展

时间单位

相邻单位进制是1000,比如1s=10^3ms,时间级别依次下降

名称

毫秒

微秒

纳秒

单位

s

ms

us

ns

CPU的频率级别GHz,执行一条指令的时间级别是纳秒ns级,单片机的执行速度在us级别,一般一条Javascript语句会被解释器编译成几条指令

下面做一个假设,CPU执行一条指令3ns,for循环结构被编译后假设执行一次是3条指令,100万次,就是3X10^6条指令,那么执行时间就是9X10^6ns,换算单位就是9ms

以上数字全为假设,具体值有偏差,但是在数量级的层面基本是符合实际的,有兴趣的话可以多了解CPU结构和操作系统

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值