[英]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.