簡體   English   中英

如何在moment.js中設置用於解析的語言環境?

[英]How to set locale for parsing in moment.js?

不幸的是,我在文檔中找不到答案,所以...

例如,我輸入了日期:“ 09/01/2017”。 我不知道,它是DD / MM / YYYY或MM / DD / YYYY,但是我知道用戶的語言環境。 我可以得到下面的東西嗎?

let date   = "09/01/2017",
    locale = "en_US",// or "en_AU"
    result = moment(date, locale).format("DD MMM YYYY");
// 01 Sep 2017
// 09 Jan 2017

還是我需要寫一張地圖,然后將格式設置為力矩?

let map =
    {
        en_US: 'DD/MM/YYYY',
        en_AU: 'MM/DD/YYYY',
        // ...
    },
    date   = "09/01/2017",
    locale = "en_US",// or "en_AU"
    result = moment(date, map[locale]).format("DD MMM YYYY");
// 01 Sep 2017
// 09 Jan 2017

謝謝

您可以使用moment.localeData()longDateFormat('L')來獲取特定於語言環境的令牌。

這是一個現場樣本:

 let date = "09/01/2017"; let locale = "en_US"; let localeFormat = moment.localeData(locale).longDateFormat('L'); let result = moment(date, localeFormat).format("DD MMM YYYY"); console.log(result); // 01 Sep 2017 locale = "en_AU"; localeFormat = moment.localeData(locale).longDateFormat('L'); result = moment(date, localeFormat).format("DD MMM YYYY"); console.log(result); // 09 Jan 2017 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment-with-locales.min.js"></script> 

我會用普通的JS來基於本地來提取月份,使用moment將月份格式化為MMM,然后加入它們。

var locale = 'en_AU'

var date = '09/01/2019'.split('/')

if (locale === 'en_AU') {
    var monthFormatted = moment(date[0]).format('MMM')
    date = [date[1], monthFormatted, date[2]].join(' ')
}

else {
    var monthFormatted = moment(date[1]).format('MMM')
    date = [date[0], monthFormatted, date[2]].join(' ')
}

console.log(date)
// 09 Jan 2019 or 01 Sep 2019

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM