javascript - 如何在 moment.js 中设置解析区域?

标签 javascript date momentjs

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

例如,我输入日期:“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

或者我是否需要编写 map 并将格式设置为时刻?

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>

关于javascript - 如何在 moment.js 中设置解析区域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56480670/

相关文章:

javascript - 如何在 moment.js 中显示 unix 时间戳和当前日期之间的时间差?

javascript - 信用卡支付可以用JS加密代替SSL吗?

javascript - Jquery Ajax 在后台运行的多个页面上发布数据

javascript - 为什么这个 JavaScript 有两种不同的解释方式?

javascript - 像 "dd-mm-yyyy"这样的格式指示将如何出现在文本框中

javascript - 如何用moment js做一个格式

javascript - 删除数据数组JS

java - "2017-03-29 18:17:12+00"的日期格式是什么

java - 需要根据当前日期列出前几个季度的列表

javascript - 如何在 moment.js 中正确地将 1 个月添加到当前日期