1. 程式人生 > >momentJS日期處理類庫---時間加減處理

momentJS日期處理類庫---時間加減處理

計算最近在使用JavaScript計算時間差的時候,發現很多問題需要處理,在檢視momentJS之後,發現非常容易。

        console.log(moment().format("YYYY-MM-DD HH:mm:ss")); //當前時間         console.log(moment().subtract(10, "days").format("YYYY-MM-DD"));    //當前時間的前10天時間         console.log(moment().subtract(1, "years").format("YYYY-MM-DD"));    //當前時間的前1年時間         console.log(moment().subtract(3, "months").format("YYYY-MM-DD"));   //當前時間的前3個月時間         console.log(moment().subtract(1, "weeks").format("YYYY-MM-DD"));    //當前時間的前一個星期時間

在實際應用中,我們經常需要計算兩個時間的差值,用來確定消逝的時間,如下:

var m1 = moment('2017-12-18 10:00:20'),     m2 = moment('2017-12-18 10:10:00'),     du = moment.duration(m2 - m1, 'ms'); //  輸出結果為“10 分鐘” console.log(du.locale('zh-cn').humanize()) 在要求精確的環境中,比如要精確到秒,並且能提供秒遞增的動畫功能,此時“humanize()”就顯得力不從心,但duration又沒有提供moment的“format”方法,怎麼辦呢?

初步的想法是將moment.duration物件轉換為moment物件,然後再利用“format”方法進行轉換,但是結果卻多了8小時,如下:

var m1 = moment('2017-12-18 10:00:20'),     m2 = moment('2017-12-18 10:10:00'),     du = moment(m2 - m1).format('HH時mm分ss秒'); //  輸出結果為08時09分40秒 console.log(du);

8小時,很容易就讓我們想到是時區的問題,可以通過如下方式進行驗證:

du = moment(m2 - m1).format('HH時mm分ss秒 ZZ'); //  輸出結果為08時09分40秒 +0800 console.log(du)

粗暴的方式是直接減去8小時的資料,優雅的方式是引入Moment Timezone,如下:

//  Africa/Abidjan為+00:00時區 //  輸出結果00時09分40秒 du = moment.tz(m2 - m1, "Africa/Abidjan").format('HH時mm分ss秒')