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

本文详细介绍Moment.js库的功能和使用方法,包括日期格式化、相对时间计算、日历时间展示、多语言支持等,同时提供了实用的代码示例,如时间戳转换、倒计时实现及获取指定日期。
moment 获取时间
  1.
npm install moment --save # npm
  2.使用
import moment from "moment";
moment(new Date()).format("MM-DD")

  日期格式化

moment().format('MMMM Do YYYY, h:mm:ss a'); // 五月 24日 2019, 7:47:43 晚上
moment().format('dddd');                    // 星期五
moment().format("MMM Do YY");               // 5月 24日 19
moment().format('YYYY [escaped] YYYY');     // 2019 escaped 2019
moment().format();                          // 2019-05-24T19:47:43+08:00

  相对时间

moment("20111031", "YYYYMMDD").fromNow(); // 8 年前
moment("20120620", "YYYYMMDD").fromNow(); // 7 年前
moment().startOf('day').fromNow();        // 20 小时前
moment().endOf('day').fromNow();          // 4 小时内
moment().startOf('hour').fromNow();       // 1 小时前

  日历时间

moment().subtract(10, 'days').calendar(); // 2019年5月14日
moment().subtract(6, 'days').calendar();  // 上周六晚上7点49
moment().subtract(3, 'days').calendar();  // 本周二晚上7点49
moment().subtract(1, 'days').calendar();  // 昨天晚上7点49分
moment().calendar();                      // 今天晚上7点49分
moment().add(1, 'days').calendar();       // 明天晚上7点49分
moment().add(3, 'days').calendar();       // 下周一晚上7点49
moment().add(10, 'days').calendar();      // 2019年6月3日

  多语言支持

moment().format('L');    // 2019-05-24
moment().format('l');    // 2019-05-24
moment().format('LL');   // 2019年5月24日
moment().format('ll');   // 2019年5月24日
moment().format('LLL');  // 2019年5月24日晚上7点50分
moment().format('lll');  // 2019年5月24日晚上7点50分
moment().format('LLLL'); // 2019年5月24日星期五晚上7点50分
moment().format('llll'); // 2019年5月24日星期五晚上7点50分

  实用技巧 — — 例子:

moment().format("YYYY-MM-DD") //格式化显示当前时间
`${moment().subtract("month", +1).format("YYYY-MM")}-01` //上一个月的1号
`${moment().add("month", -1).format("YYYY-MM")}-01`  //还是上一个月1号 
let M = `${moment().format("YYYY-MM")}-01` //本月一号
moment(M).add("days", -1).format("YYYY-MM-DD") //上一个月月底 
moment().startOf("year").format(
"YYYY-MM-DD") //本年的的开始日期,("2019-01-01")
moment().endOf("year").format("YYYY-MM-DD") //本年的的结束日期,("2019-12-31")
//moment 转成时间戳
moment().valueOf()
//时间戳 转 moment
moment(string).format()

 

时间对象: 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值