用 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日 19moment().format('YYYY [escaped] YYYY'); // 2019 escaped 2019moment().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点49moment().subtract(3, 'days').calendar(); // 本周二晚上7点49moment().subtract(1, 'days').calendar(); // 昨天晚上7点49分moment().calendar(); // 今天晚上7点49分moment().add(1, 'days').calendar(); // 明天晚上7点49分moment().add(3, 'days').calendar(); // 下周一晚上7点49moment().add(10, 'days').calendar(); // 2019年6月3日
多语言支持
moment().format('L'); // 2019-05-24moment().format('l'); // 2019-05-24moment().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补017 */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); //111 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())