用 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())