moment.js的使用

時(shí)間戳與時(shí)間相互轉(zhuǎn)換

時(shí)間:var time = new Date(); // Tue Aug 28 2018 09:16:06 GMT+0800 (中國標(biāo)準(zhǔn)時(shí)間)

時(shí)間戳:var timestamp = Date.parse(time); // 1535419062000 (Date.parse() 默認(rèn)不取毫秒,即后三位毫秒為0)

moment轉(zhuǎn)時(shí)間:moment(time).valueOf(); // 1535419062126

moment轉(zhuǎn)時(shí)間戳:moment(timestamp).format(); // 2018-08-28T09:17:42+08:00

獲取當(dāng)前時(shí)間往前的時(shí)間

moment().format("YYYY-MM-DD HH:mm:ss"); //當(dāng)前時(shí)間

moment().subtract(7, "days").format("YYYY-MM-DD"); //當(dāng)前時(shí)間的前7天時(shí)間

moment().subtract(1, "years").format("YYYY-MM-DD"); //當(dāng)前時(shí)間的前1年時(shí)間

moment().subtract(3, "months").format("YYYY-MM-DD"); //當(dāng)前時(shí)間的前3個(gè)月時(shí)間

moment().subtract(1, "weeks").format("YYYY-MM-DD"); //當(dāng)前時(shí)間的前一個(gè)星期時(shí)間

獲取兩個(gè)日期/時(shí)間的時(shí)差

moment(endTime).diff(moment(startTime), 'years')

moment(endTime).diff(moment(startTime), 'months')

moment(endTime).diff(moment(startTime), 'days')    //  開始時(shí)間和結(jié)束時(shí)間的時(shí)間差,以“天”為單位;endTime和startTime都是毫秒數(shù)

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

moment(endTime).diff(moment(startTime), 'seconds')

根據(jù)當(dāng)前時(shí)間判別本周一 至 周日 日期, 本月天數(shù)等

周一 至 周日 時(shí)間格式化轉(zhuǎn)化(Y --- 年 M --- 月 D--- 天

    var timeNow = new Date()// 當(dāng)前時(shí)間
    var weekOfday = moment(timeNow).format('E'); // 計(jì)算今天是這周第幾天
 
    var nowDay = moment(timeNow).format('YYYY-MM-DD') // 當(dāng)前日期
 
    var Monday = moment(timeNow).subtract(weekOfday - 1, 'days').format('YYYY-MM-DD'); // 周一日期
 
    var Tuesday = moment(timeNow).subtract(weekOfday - 2, 'days').format('YYYY-MM-DD'); // 周二日期
 
    var Wednesday = moment(timeNow).subtract(weekOfday - 3, 'days').format('YYYY-MM-DD'); // 周三日期
 
    var Thursday = moment(timeNow).subtract(weekOfday - 4, 'days').format('YYYY-MM-DD'); // 周四日期
 
    var Friday = moment(timeNow).subtract(weekOfday - 5, 'days').format('YYYY-MM-DD'); // 周五日期
 
    var Saturday = moment(timeNow).subtract(weekOfday - 6, 'days').format('YYYY-MM-DD'); // 周六日期
 
    var Sunday = moment(timeNow).add(7 - weekOfday, 'days').format('YYYY-MM-DD'); // 周日日期  

獲取當(dāng)前月的總天數(shù)

moment().daysInMonth() 

官網(wǎng)摘錄:

日期格式化

moment().format('MMMM Do YYYY, h:mm:ss a'); // 五月 27日 2020, 4:47:31 下午
moment().format('dddd');                    // 星期三
moment().format("MMM Do YY");               // 5月 27日 20
moment().format('YYYY [escaped] YYYY');     // 2020 escaped 2020
moment().format();                          // 2020-05-27T16:47:31+08:00

相對時(shí)間

moment("20111031", "YYYYMMDD").fromNow(); // 9 年前
moment("20120620", "YYYYMMDD").fromNow(); // 8 年前
moment().startOf('day').fromNow();        // 17 小時(shí)前
moment().endOf('day').fromNow();          // 7 小時(shí)內(nèi)
moment().startOf('hour').fromNow();       // 1 小時(shí)前

日歷時(shí)間

moment().subtract(10, 'days').calendar(); // 2020/05/17
moment().subtract(6, 'days').calendar();  // 上星期四16:47
moment().subtract(3, 'days').calendar();  // 上星期日16:47
moment().subtract(1, 'days').calendar();  // 昨天16:47
moment().calendar();                      // 今天16:47
moment().add(1, 'days').calendar();       // 明天16:47
moment().add(3, 'days').calendar();       // 下星期六16:47
moment().add(10, 'days').calendar();      // 2020/06/06

多語言支持

moment.locale();         // zh-cn
moment().format('LT');   // 16:47
moment().format('LTS');  // 16:47:31
moment().format('L');    // 2020/05/27
moment().format('l');    // 2020/5/27
moment().format('LL');   // 2020年5月27日
moment().format('ll');   // 2020年5月27日
moment().format('LLL');  // 2020年5月27日下午4點(diǎn)47分
moment().format('lll');  // 2020年5月27日 16:47
moment().format('LLLL'); // 2020年5月27日星期三下午4點(diǎn)47分
moment().format('llll'); // 2020年5月27日星期三 16:47

下面是兩個(gè)常用的鏈接地址,僅供參考

  1. moment.js地址: https://github.com/moment/moment
  2. 前端開源項(xiàng)目 CDN 加速服務(wù),基本上所有的開源js都能在上面找到: https://www.bootcdn.cn/

new Date('2019-12-22').getTime()轉(zhuǎn)化成時(shí)分秒是北京時(shí)間8點(diǎn)的時(shí)間戳,在IOS上不識別中橫線分割的時(shí)間字符串問題,解決辦法:
new Date('2019/12/22 00:00:00').getTime() 是0點(diǎn)的時(shí)間戳


image.png

驚訝的發(fā)現(xiàn),-分割的字符串,被默認(rèn)解析到了8點(diǎn),而/分割的字符串,默認(rèn)解析到了0點(diǎn)。這么說來,我之前有點(diǎn)多次一舉了,直接講-替換成/就可以了
最終,既然-分割的字符串會出問題,那我就講所有的-都換成/就好了,正好也可以借此解決IOS的兼容問題。

動手解決

/**
 * 將時(shí)間字符串轉(zhuǎn)換成date對象
 * @param dateStr
 * 時(shí)間字符串
 */
function getDate(dateStr){
    /* 若日期是使用-分割的,全部轉(zhuǎn)換成/
            因?yàn)橹挥腥掌跁r(shí),js會將-分割的字符串基準(zhǔn)時(shí)區(qū)設(shè)置為GMT,與當(dāng)前時(shí)區(qū)相差8小時(shí) */
    dateStr = dateStr.replace(/-/g, '/');
    return new Date(dateStr);
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容