Moment日期处理类库基本用法,以及汉化

moment常用示例

moment(new Date()).format('YYYY-MM-DD HH:mm:ss'); // 2021-01-20 10:58:45

moment(new Date()).format('MM月DD日'); // 01月20日

moment(new Date()).format('MMM'); // 1月

moment(new Date()).format('MMMM'); // 一月

moment(new Date()).format('dd'); // 三

moment(new Date()).format('ddd'); // 周三

moment(new Date()).format('dddd'); //  星期三

moment(new Date()).isoWeekday(); // 3

moment(new Date()).isoWeekYear(); // 2021

moment(new Date()).format('LT'); // 10:58

moment(new Date()).format('LTS'); // 10:58:45

moment(new Date()).format('L'); // 2021/01/20

moment(new Date()).format('LL'); //  2021年1月20日

moment(new Date()).format('LLL'); // 2021年1月20日上午10点58分

moment(new Date()).format('LLLL'); // 2021年1月20日星期三上午10点58分

moment(new Date()).format('l'); // 2021/1/20

moment(new Date()).format('ll'); // 2021年1月20日

moment(new Date()).format('lll'); // 2021年1月20日 10:58

moment(new Date()).format('llll'); // 2021年1月20日星期三 10:58

moment(new Date()).format('A'); // 上午

moment(new Date()).format('a'); // 上午

moment(new Date()).format('ALT') // 上午10:58

subtract 减法 、 add 加法

moment().add(7, 'days').format('LL'); // 当前日期的7天后的日期 

moment().subtract(7, 'days').format('LL'); // 当前日期的7天前的日期

moment().add(9, 'hours').format('HH:mm:ss'); // 当前时间的9小时后 

moment().subtract(9, 'hours').format('HH:mm:ss'); // 当前时间的9小时前 

moment().add(1, 'week').format('LL'); // 当前日期的1周后

fromNow 时差 (之前) ; fromNow(true) 加true表示去除前字或者内字,不加则保留

moment([2017, 0, 29]).fromNow(true); //  4年

moment([2017, 0, 29]).fromNow(); //  4年前

moment([2020, 8, 29]).fromNow(true); //  5个月

moment([2020, 8, 29]).fromNow(); //  5个月内

moment("20170929", "YYYYMMDD").fromNow(); // 6年前

moment(+new Date() - 1000 * 300).fromNow(); // 5分钟前

moment(+new Date() - 1000 * 3).fromNow(); // 几秒前

 moment(+new Date() - 3 * 24 * 60 * 60 * 1000).fromNow(); // 3天前

 moment(+new Date() - 30 * 24 * 60 * 60 * 1000).fromNow(); // 1个月前

 moment(+new Date() - 365 * 24 * 60 * 60 * 1000).fromNow(); // 1年前

toNow 时差 (之后 现在为基准) ; toNow(true) 去除前或者内字

moment([2017, 0, 29]).toNow(); // 4年内

moment([2020, 0, 29]).toNow(); // 1年内

moment([2020, 0, 29]).toNow(true); // 1年

时差 (之后; to(true) // 去除前或者内字 (注意 这个可能会出错),个人认为没有fromNow(true)好用

new moment([2017, 0, 29]).to(); // 4年内

new moment([2020, 0, 29]).to(); // 1年前

new moment([2020, 0, 29]).to(); // 1年

时差 (毫秒)

moment([2007, 0, 29]).diff(moment([2007, 0, 28])); //  相差一天的毫秒数86400000

时差 (分钟)

moment([2007, 0, 29]).diff(moment([2007, 0, 28]), 'minute'); //一天相差1440分钟

时差 (天)

 moment([2007, 0, 29]).diff(moment([2007, 0, 28]), 'days'); //  1天

天数 (月)

moment("2025-02", "YYYY-MM").daysInMonth(); //  29   计算当月有多少天

时间差

let m1 = moment('2018-03-30 18:13:12') //指定一个时间

let m2 = moment()

var du = moment.duration(m2 - m1, 'ms'),

            years = du.get('year'),

            months = du.get('months'),

            days = du.get('days'),

            hours = du.get('hours'),

            mins = du.get('minutes'),

            ss = du.get('seconds');

 console.log(years + "年" + months + "月" + days + "日" + hours + '时' + mins + '分' + ss + '秒');

在vue中汉化moment

创建文件zhcn_moment.js,拷贝以下内容
moment汉化 ,只需要在main.js中引用该文件即可

import moment from 'moment'

// 里面的字符可以根据自己的需要进行调整

moment.locale('zh-cn', {

    months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),

    monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),

    weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),

    weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),

    weekdaysMin: '日_一_二_三_四_五_六'.split('_'),

    longDateFormat: {

        LT: 'HH:mm',

        LTS: 'HH:mm:ss',

        L: 'YYYY-MM-DD',

        LL: 'YYYY年MM月DD日',

        LLL: 'YYYY年MM月DD日Ah点mm分',

        LLLL: 'YYYY年MM月DD日ddddAh点mm分',

        l: 'YYYY-M-D',

        ll: 'YYYY年M月D日',

        lll: 'YYYY年M月D日 HH:mm',

        llll: 'YYYY年M月D日dddd HH:mm'

    },

    meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,

    meridiemHour: function (hour, meridiem) {

        if (hour === 12) {

            hour = 0;

        }

        if (meridiem === '凌晨' || meridiem === '早上' ||

            meridiem === '上午') {

            return hour;

        } else if (meridiem === '下午' || meridiem === '晚上') {

            return hour + 12;

        } else {

            // '中午'

            return hour >= 11 ? hour : hour + 12;

        }

    },

    meridiem: function (hour, minute, isLower) {

        const hm = hour * 100 + minute;

        if (hm < 600) {

            return '凌晨';

        } else if (hm < 900) {

            return '早上';

        } else if (hm < 1130) {

            return '上午';

        } else if (hm < 1230) {

            return '中午';

        } else if (hm < 1800) {

            return '下午';

        } else {

            return '晚上';

        }

    },

    calendar: {

        sameDay: '[今天]LT',

        nextDay: '[明天]LT',

        nextWeek: '[下]ddddLT',

        lastDay: '[昨天]LT',

        lastWeek: '[上]ddddLT',

        sameElse: 'L'

    },

    dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/,

    ordinal: function (number, period) {

        switch (period) {

            case 'd':

            case 'D':

            case 'DDD':

                return number + '日';

            case 'M':

                return number + '月';

            case 'w':

            case 'W':

                return number + '周';

            default:

                return number;

        }

    },

    relativeTime: {

        future: '%s内',

        past: '%s前',

        s: '几秒',

        ss: '%d秒',

        m: '1分钟',

        mm: '%d分钟',

        h: '1小时',

        hh: '%d小时',

        d: '1天',

        dd: '%d天',

        M: '1个月',

        MM: '%d个月',

        y: '1年',

        yy: '%d年'

    },

    week: {

        // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效

        dow: 1, // Monday is the first day of the week.

        doy: 4  // The week that contains Jan 4th is the first week of the year.

    }

})

在main.js文件中引用即可完成汉化

import'@/utils/zhcn_moment.js'

参考来源
https://huhao.me/498.html](https://huhao.me/498.html

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容