javascript - 解析特定语言环境中的日期字符串(不是时区!)

标签 javascript momentjs

使用 MomentJS,如有必要,我可以使用 .locale(或旧版本中的 .lang)在特定时刻实例(而不是全局)设置语言环境。如何使用全局语言环境以外的特定语言环境解析字符串?由于 moment 函数本身就是我们用于解析的函数,而且似乎没有进行完整解析的 .set 变体?

例如:

// Assume the default locale is 'en' (just in case, I'll set it for the snippet)
moment.locale('en');

// I have this string that's in the French locale
var str = "30 Avril 2015";

// Parsing it fails
var m = moment(str, "DD MMMM YYYY");
snippet.log(m.format("YYYY-MM-DD")); // "Invalid Date"
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.9.0/moment-with-locales.js"></script>
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

最佳答案

从版本 2.0.0 开始,可以将语言环境键作为第三个参数传递给 moment()moment.utc()

// Assume the default locale is 'en' (just in case, I'll set it for the snippet)
moment.locale('en');

// I have this string that's in the French locale
var str = "30 Avril 2015";

// Parse it in 'fr'
var m = moment(str, "DD MMMM YYYY", "fr");

// Check result:
snippet.log(m.format("YYYY-MM-DD -- MMMM"));

// Check global locale
var locale = moment()._locale._abbr;
snippet.log('Locale : ' + locale);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.9.0/moment-with-locales.js"></script>
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

关于javascript - 解析特定语言环境中的日期字符串(不是时区!),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29434952/

相关文章:

javascript - 无法获取 'this' 变量的 ID

javascript检查字符串是否只包含字母数字字符+其他特殊字符

javascript - 在 Javascript 中按子数组键的长度对数组进行排序

node.js - 分配回对象时日期格式未更新 (YYYYMMDD)

javascript - 在 Node 中解码 Jwt token - 无需库

javascript - 访问对象中数组的值

angularjs - mattlewis92/angular-bootstrap-calendar 在不同时区计算错误日期

Javascript 查询 SharePoint 日期列返回 '/Date(1494460800000)/'

javascript - 在 momentjs 中将分钟添加到日期时间

javascript - momentjs isBefore 返回错误结果