时间对象 <-> 定时器 <-> 电子时钟 <-> 倒计时效果

时间对象: new Date()
    获取当前用户的本地时间(用户的本地时间是不可靠的)

在真正的开发中,要获取服务器的时间(相对安全)

时间戳:
1970年01月01日00时00分00秒到当前的时间

new Date().getTime(); //number类型
Date.now()
+ new Date

2018年10月27日,12点43分00秒

下面获取的时间都是数字类型:
获取当前的年份:
t.getFullYear()

获取当前的月份
t.getMonth()
注意:
获取来的值少1个月份,所以要加1

获取日
t.getDate()

获取周几
t.getDay() 周日为0

获取小时:
t.getHours()

获取分钟:
t.getMinutes()

获取秒:
t.getSeconds()
例子:在页面中显示当前时间 ==> 2018年10月28日----周日----21点46分42秒
 1     let arr = ['周日','周一','周二','周三','周四','周五','周六'];
 2     console.log(['周日','周一','周二','周三','周四','周五','周六'][new Date().getDay()])
 3     function fn(){
 4         let t = new Date();
 5         let y = t.getFullYear();
 6         let m = tDou(t.getMonth()+1);
 7         let d = tDou(t.getDate());
 8         let h = tDou(t.getHours());
 9         let mi = tDou(t.getMinutes());
10         let se = tDou(t.getSeconds());
11         p.innerHTML = y + '年' + m + '月' + d + '日----' + arr[t.getDay()]+'----'  + h +'点'+ mi +'分'+ se +'秒';
12     }
13     fn(); //上来直接执行,第一下不会闪
14     setInterval(fn,1000);
15     /*
16         小于10补0
17     */
18     function tDou(n){
19         return n<10?'0'+n:''+n;
20     }

 

倒计时原理: 
1.未来的时间
2.现在的时间(每分每秒都在动)

未来的时间 - 现在的时间 = 剩下多少时间

new Date(工作时这儿放服务器时间);

设置时间:
字符串:
new Date('年 月 日 时:分:秒')
new Date('2018 10 27 15:40:00')

数字版:
new Date(年,月,日,时,分,秒)
new Date(2018,9,27,15,40)

注意:
设置月份的时候要减1
转换公式:
1 let d = Math.floor(t/86400);
2 t %= 86400;
3 let h = Math.floor(t/3600);
4 t %= 3600;
5 let m = Math.floor(t/60);
6 t %= 60;

例子:在页面中显示到未来某个时间的倒计时   ==>   00天17时37分50秒

 1 let newdate = new Date('2018 10 28 16:00:00');  //未来的时间 
 2     let timer = null;
 3     function fn(){
 4         let nowDate = new Date(); //现在的时间
 5         let t = Math.floor((newdate - nowDate)/1000);
 6         if(t <= 0){
 7             //如果未来的时间 - 现在的时间 小于0,说明现在的时间已经超过了设置的时间,所以关闭定时器
 8             clearInterval(timer);
 9         }else{
10             let d = Math.floor(t/86400);   //1
11             t %= 86400;  
12             let h = Math.floor(t/3600);
13             t %= 3600;
14             let m = Math.floor(t/60);
15             t %= 60;
16             p.innerHTML = tDou(d)+'天'+tDou(h)+'时'+tDou(m)+'分'+tDou(t)+'秒';
17         }
18     }
19 
20     fn();//上来就先调用一次,避免有闪的现象
21 
22     timer = setInterval(fn,1000);//开启定时器
23 
24     function tDou(n){  //补零
25         return n<10?'0'+n:''+n;
26     }

 


求 一个月有多少天,这个月有几天?
  let d = new date
  d.setDate(1)//先设置成一号,避免出现计算下下个月的天数的情况
          (比如1月30天,而2月最大28天,此时用这个方法会跳过2月,进入3月份,)
  d.setMonth(d.getMonth()+1) //设置成下个月

  d.setDate(0) //代表上个月的最后一天 等于知道了这个月有多少天
  console.log(d.getDate())

转载于:https://www.cnblogs.com/MrZhujl/p/9867678.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值