javascript - Moment.js 将文本解析为日期似乎与语言环境不匹配

标签 javascript momentjs

字符串 12.01.2015 例如在德国代表 2015 年 1 月 12 日。但以下代码无法按预期工作:

moment.locale('de');
moment('12.01.2015').toString(); // "Tue Dec 01 2015 00:00:00 GMT+0100"
moment('12.01.2015').fromNow(); // "in einem Jahr" (==> locale setting is OK)

在 locale/de.js 中有以下内容:

longDateFormat : {
    ...
    L : 'DD.MM.YYYY',
    ...
}

为什么字符串没有按我认为应该的方式解析?

最佳答案

Momen't locale 设置所需的时刻输出。不是输入。您需要提供如下输入格式:

moment('12.01.2015', 'DD.MM.YYYY')

参见 this github 页面以获取更多关于这种行为在未来将如何改变的具体解释。

您可以将其包装在一个函数中,这样您就不必随身携带格式:

function germanMoment(date){
    return moment(date, 'DD.MM.YYYY')
}

然后您可以简单地使用 germanMoment('12.01.2015').fromNow(),它将按需要工作。

关于javascript - Moment.js 将文本解析为日期似乎与语言环境不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27317215/

相关文章:

javascript - 创建长度为 n 的空数组

javascript - 如何从此字符串中获取日期 Wed Dec 11 16 :02:54 CET 2019

javascript - 如何在javascript中将浮点值转换为日期时间格式

javascript - 更改滚动 javascript 上 3 个 div 的 css 属性

javascript - 语义 UI 未按预期工作

javascript - 将千秒转换为 h :mm:ss in moment. js

javascript - 解析cookie过期日期

javascript - 测试根据出生日期计算年龄的函数

Javascript 关闭 setTimeout 间隔问题

javascript - React Native 在 React Native iOS Android 中创建省略号剪辑文本或如何在 React Native 中使用点隐藏额外文本