moment.js 前端日期格式化的常用方法


原文:https://blog.csdn.net/halo1416/article/details/83620022

官網:http://momentjs.cn/

vue項目中,需要把 moment.js 掛載到全局上(即vue的原型鏈上),訪問時直接使用 this.moment() ;

vue項目中不掛載到全局,單文件(單組件)使用:

          ==>>  import moment from "moment";      然后直接使用 moment() 

 

1. 初始化日期 / 時間

初始化日期:moment().format('YYYY-MM-DD');

初始化日期時間:moment().format('YYYY-MM-DD HH:mm:ss');

 

2. 格式化日期 / 時間

格式化日期:moment(value).format('YYYY-MM-DD');

格式化日期時間:moment(value).format('YYYY-MM-DD HH:mm:ss');

 

3. 加/減  ==>>  操作之前必須使用 this.moment(日期變量) ;將要操作的日期轉為 moment.js 可以處理的日期時間格式

加法:this.moment().add(1, 'months').format('YYYY-MM-DD');    ==>> 當前日期加一個月並輸出格式為 'YYYY-MM-DD'

加法:this.moment(startDate).add(2, 'days').format('YYYY-MM-DD')      ==>> 指定日期(startDate)加2天並輸出格式                                                                                                                                       為 'YYYY-MM-DD'

減法: this.moment().subtract(7, 'days');     ==>> 當前時間減去7天

加法:this.moment(startDate).subtract(2, 'days').format('YYYY-MM-DD')      ==>> 指定日期(startDate)加減去2天並輸出格式                                                                                                                                       為 'YYYY-MM-DD'

 

4. 獲取星期幾

獲取星期幾: this.moment().day()  或  this.moment(startDate).day()      ==>> 當前日期/指定日期 是星期幾

 

5. 獲取毫秒數

獲取毫秒數:this.moment().day()  或  this.moment(startDate).valueOf()   

                     ==>> 在獲取指定時間的毫秒數時,必須要有日期。即startDate包括日期時間

 

6. 獲取時間差(以毫秒計算)

兩個日期/時間的時差:this.moment(endTime).diff(this.moment(startTime),'days' )

                                     ==>>  開始時間和結束時間的時間差,以“天”為單位;endTime和startTime都是毫秒數

                                    this.moment(endTime).diff(this.moment(startTime), 'minutes')

                                     ==>>  開始時間和結束時間的時間差,以“分鍾”為單位

                    ==>> 注意:計算時間差時,可以以 “years”、“days”、“hours”、“minutes” 以及 "seconds" 為單位輸出!

 

7. 兩個具體的日期之差(天數,也可以是年)

 

 

8. 獲取時、分、秒

原理:利用字符串的 split 方法拆分時分秒,然后分別用moment的 hour、minute 和 second 方法;帶有日期的可以用 .valueof() 方法。

const fixStart = '08:00:00'

const getHour = this.moment().hour(Number(fixStart.split(':')[0]));
const getMinute = this.moment().minute(Number(fixStart.split(':')[1]));
const getSecond = this.moment().second(Number(fixStart.split(':')[2]));

// 描述為0,直接寫出second(0)
const getHour_Minute_Second = this.moment().hour(Number(fixStart.split(':')[0])).minute(Number(fixStart.split(':')[1])).second(0);

console.log('=====輸出',getHour,getMinute,getSecond,getHour_Minute_Second);
得到的結果都是moment.js 自身的時間格式。可以用 format 轉換為自己想要的格式,也可以用 diff 方法做時間差的計算

 

 

9. 將毫秒數轉為時分秒

注意:毫秒轉為其他單位時,達到你想要轉的單位時,為1,超過時不管,不足時為0;

           如4800000(80分鍾),轉為天:0

                                                   轉為小時:1

                                                   轉為分鍾:20

                                                   轉為秒:0

const msTime = 4800000; //80分鍾

moment.duration(msTime).hours(); //轉為小時,值為1
moment.duration(msTime).minutes(); //轉為分鍾,值為20
moment.duration(msTime).seconds(); //轉為秒,值為0
轉為其他單位:

moment.duration(msTime, 'seconds'); //轉為秒
moment.duration(msTime, 'minutes'); //轉為分
moment.duration(msTime, 'hours'); //轉為小時
moment.duration(msTime, 'days'); //轉為天
moment.duration(msTime, 'weeks'); //轉為周
moment.duration(msTime, 'months'); //轉為月
moment.duration(msTime, 'years'); //轉為年
對應的顯示格式:

 

10. 判斷一個日期是否在兩個日期之前  isBetween

語法: this.moment().isBetween(moment-like, moment-like, String, String);

a. 不包含起始這兩個日期(只有兩個參數)   ==>> 中文網只有兩個參數

this.moment('2010-10-20').isBetween('2010-10-19', '2010-10-25'); // true
this.moment('2010-10-19').isBetween('2010-10-19', '2010-10-25'); // false
this.moment('2010-10-25').isBetween('2010-10-19', '2010-10-25'); // false
b. 自定義是否包含起始日期(四個參數,主要是第四個參數)   ==>> 英文網才有四個參數

        第三個參數,固定為null;

        第四個參數,字符串,( ) 表示不包含,[ ] 表示包含。右括號制開始日期,右括號控制結束日期

this.moment('2016-10-30').isBetween('2016-10-30', '2016-12-30', null, '()'); //false
this.moment('2016-10-30').isBetween('2016-10-30', '2016-12-30', null, '[)'); //true
this.moment('2016-10-30').isBetween('2016-01-01', '2016-10-30', null, '()'); //false
this.moment('2016-10-30').isBetween('2016-01-01', '2016-10-30', null, '(]'); //true
this.moment('2016-10-30').isBetween('2016-10-30', '2016-10-30', null, '[]'); //true
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM