Moment.js顯示中文


typora-root-url: ./momentImgs

Moment.js顯示中文

一融涣、參考文章:moment.js 添加中文語言(漢化)

二、開始搞

0昭伸、前提背景

最近自己在搞微信小程序的一個項目彼绷,項目中需要用到時間戳,然后就想到用Moment.js這個日期處理類庫纷宇,寫了一段代碼,測試了一下蛾方,打印出來的日期顯示為英文像捶,考慮到用戶的需求上陕,需要設(shè)置為中文。

這里寫圖片描述

1拓春、找到Moment.js中文字典部分

然后在網(wǎng)上查到就查到了該文章(參考文章:moment.js 添加中文語言(漢化)),看了看里面的大概步驟释簿,

moment.js提供了多種語言的支持,首先在github上找到中文字典部分:

moment.defineLocale('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 : 'Ah點mm分',  
            LTS : 'Ah點m分s秒',  
            L : 'YYYY-MM-DD',  
            LL : 'YYYY年MMMD日',  
            LLL : 'YYYY年MMMD日Ah點mm分',  
            LLLL : 'YYYY年MMMD日ddddAh點mm分',  
            l : 'YYYY-MM-DD',  
            ll : 'YYYY年MMMD日',  
            lll : 'YYYY年MMMD日Ah點mm分',  
            llll : 'YYYY年MMMD日ddddAh點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) {  
            var 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 : function () {  
                return this.minutes() === 0 ? '[今天]Ah[點整]' : '[今天]LT';  
            },  
            nextDay : function () {  
                return this.minutes() === 0 ? '[明天]Ah[點整]' : '[明天]LT';  
            },  
            lastDay : function () {  
                return this.minutes() === 0 ? '[昨天]Ah[點整]' : '[昨天]LT';  
            },  
            nextWeek : function () {  
                var startOfWeek, prefix;  
                startOfWeek = moment().startOf('week');  
                prefix = this.unix() - startOfWeek.unix() >= 7 * 24 * 3600 ? '[下]' : '[本]';  
                return this.minutes() === 0 ? prefix + 'dddAh點整' : prefix + 'dddAh點mm';  
            },  
            lastWeek : function () {  
                var startOfWeek, prefix;  
                startOfWeek = moment().startOf('week');  
                prefix = this.unix() < startOfWeek.unix()  ? '[上]' : '[本]';  
                return this.minutes() === 0 ? prefix + 'dddAh點整' : prefix + 'dddAh點mm';  
            },  
            sameElse : 'LL'  
        },  
        ordinalParse: /\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內(nèi)',  
            past : '%s前',  
            s : '幾秒',  
            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《數(shù)據(jù)元和交換格式·信息交換·日期和時間表示法》與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.  
        }  
    });

然后就開始弄了硼莽,打開moment.js(version : 2.10.6 )最后代碼如下

 // moment.js
// ... 以上代碼略
var Wd = Math.abs,
        Xd = yc("ms"),
        Yd = yc("s"),
        Zd = yc("m"),
        $d = yc("h"),
        _d = yc("d"),
        ae = yc("w"),
        be = yc("M"),
        ce = yc("y"),
        de = Ac("milliseconds"),
        ee = Ac("seconds"),
        fe = Ac("minutes"),
        ge = Ac("hours"),
        he = Ac("days"),
        ie = Ac("months"),
        je = Ac("years"),
        ke = Math.round,
        le = { s: 45, m: 45, h: 22, d: 26, M: 11 },
        me = Math.abs,
        ne = Ha.prototype;
    ne.abs = oc, ne.add = qc, ne.subtract = rc, ne.as = wc, ne.asMilliseconds = Xd, ne.asSeconds = Yd, ne.asMinutes = Zd, ne.asHours = $d, ne.asDays = _d, ne.asWeeks = ae, ne.asMonths = be, ne.asYears = ce, ne.valueOf = xc, ne._bubble = tc, ne.get = zc, ne.milliseconds = de, ne.seconds = ee, ne.minutes = fe, ne.hours = ge, ne.days = he, ne.weeks = Bc, ne.months = ie, ne.years = je, ne.humanize = Fc, ne.toISOString = Gc, ne.toString = Gc, ne.toJSON = Gc, ne.locale = rb, ne.localeData = sb, ne.toIsoString = aa("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)", Gc), ne.lang = Cd, H("X", 0, 0, "unix"), H("x", 0, 0, "valueOf"), N("x", _c), N("X", bd), Q("X", function(a, b, c) { c._d = new Date(1e3 * parseFloat(a, 10)) }), Q("x", function(a, b, c) { c._d = new Date(q(a)) }), a.version = "2.10.6", b(Da), a.fn = Od, a.min = Fa, a.max = Ga, a.utc = h, a.unix = Zb, a.months = jc, a.isDate = d, a.locale = w, a.invalid = l, a.duration = Ya, a.isMoment = o, a.weekdays = lc, a.parseZone = $b, a.localeData = y, a.isDuration = Ia, a.monthsShort = kc, a.weekdaysMin = nc, a.defineLocale = x, a.weekdaysShort = mc, a.normalizeUnits = A, a.relativeTimeThreshold = Ec;
    var oe = a;
    return oe
});

看此代碼更參考文章中的介紹的情況不一致(位置在最后一句 “return _moment;”)庶溶,應(yīng)該是moment.js更新所致垃帅。

其實無所謂捌肴,只是要把return _moment; 改為return oe,同時把moment.defineLocale('zh-cn', {改為

oe.defineLocale('zh-cn', {即可叼架。

然后把moment.js中文字典的代碼復制到moment.js中位置在最后一句 “return oe;” 的前面匆光,代碼如下所示

// ... 以上代碼省略
var oe = a;
    // 這里moment改為oe
    oe.defineLocale('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 : 'Ah點mm分',  
            LTS : 'Ah點m分s秒',  
            L : 'YYYY-MM-DD',  
            LL : 'YYYY年MMMD日',  
            LLL : 'YYYY年MMMD日Ah點mm分',  
            LLLL : 'YYYY年MMMD日ddddAh點mm分',  
            l : 'YYYY-MM-DD',  
            ll : 'YYYY年MMMD日',  
            lll : 'YYYY年MMMD日Ah點mm分',  
            llll : 'YYYY年MMMD日ddddAh點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) {  
            var 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 : function () {  
                return this.minutes() === 0 ? '[今天]Ah[點整]' : '[今天]LT';  
            },  
            nextDay : function () {  
                return this.minutes() === 0 ? '[明天]Ah[點整]' : '[明天]LT';  
            },  
            lastDay : function () {  
                return this.minutes() === 0 ? '[昨天]Ah[點整]' : '[昨天]LT';  
            },  
            nextWeek : function () {  
                var startOfWeek, prefix;  
                startOfWeek = moment().startOf('week');  
                prefix = this.unix() - startOfWeek.unix() >= 7 * 24 * 3600 ? '[下]' : '[本]';  
                return this.minutes() === 0 ? prefix + 'dddAh點整' : prefix + 'dddAh點mm';  
            },  
            lastWeek : function () {  
                var startOfWeek, prefix;  
                startOfWeek = moment().startOf('week');  
                prefix = this.unix() < startOfWeek.unix()  ? '[上]' : '[本]';  
                return this.minutes() === 0 ? prefix + 'dddAh點整' : prefix + 'dddAh點mm';  
            },  
            sameElse : 'LL'  
        },  
        ordinalParse: /\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內(nèi)',  
            past : '%s前',  
            s : '幾秒',  
            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《數(shù)據(jù)元和交換格式·信息交換·日期和時間表示法》與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.  
        }  
    });  
    return oe
});

使用代碼簡單測試一下,然后就可以實現(xiàn)中文顯示了套像。

這里寫圖片描述
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市终息,隨后出現(xiàn)的幾起案子夺巩,更是在濱河造成了極大的恐慌,老刑警劉巖采幌,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件劲够,死亡現(xiàn)場離奇詭異,居然都是意外死亡休傍,警方通過查閱死者的電腦和手機征绎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來磨取,“玉大人人柿,你說我怎么就攤上這事∶ρ幔” “怎么了凫岖?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長逢净。 經(jīng)常有香客問我哥放,道長,這世上最難降的妖魔是什么爹土? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任甥雕,我火速辦了婚禮,結(jié)果婚禮上胀茵,老公的妹妹穿的比我還像新娘社露。我一直安慰自己,他們只是感情好琼娘,可當我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布峭弟。 她就那樣靜靜地躺著附鸽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瞒瘸。 梳的紋絲不亂的頭發(fā)上坷备,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天,我揣著相機與錄音挨务,去河邊找鬼击你。 笑死,一個胖子當著我的面吹牛谎柄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播惯雳,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼朝巫,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了石景?” 一聲冷哼從身側(cè)響起劈猿,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎潮孽,沒想到半個月后揪荣,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡往史,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年仗颈,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片椎例。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡挨决,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出订歪,到底是詐尸還是另有隱情脖祈,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布刷晋,位于F島的核電站盖高,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏眼虱。R本人自食惡果不足惜喻奥,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蒙幻。 院中可真熱鬧映凳,春花似錦、人聲如沸邮破。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至矫渔,卻和暖如春彤蔽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背庙洼。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工顿痪, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人油够。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓蚁袭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親石咬。 傳聞我的和親對象是個殘疾皇子揩悄,可洞房花燭夜當晚...
    茶點故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容