javascript - 添加时刻语言环境打破初始日期

标签 javascript reactjs date momentjs locale

我有一个我无法解释的奇怪问题:

我有我的日期:Wed Feb 28 2018 16:24:37 GMT+0100 (CET)

当我添加 import 'moment/locale/fr'; 时,同一日期变为 Sun Jan 28 2018 16:24:37 GMT+0100 (CET)

谁能解释我做错了什么?

这是完整的例子

import React from 'react';
import moment from 'moment';
// ====== adding locale break the date    ======= //
// import 'moment/locale/fr';

// time value is : Wed Feb 28 2018 16:24:37 GMT+0100 (CET)

const Time = ({ time }) => (
    <p>
        {moment(time).format('DD-MM-YYYY HH:mm:ss')}
    </p>
);

// output without locale/fr is : 28-02-2018 16:24:37
// output with locale/fr is : 28-01-2018 16:24:37

之后我将使用 .fromNow()moment 函数来显示现在和给定时间之间的时间距离。

最佳答案

如果您在不提供输入格式的情况下解析字符串,moment.js 会首先尝试 ISO 8601 格式。如果不匹配,它会回退到内置解析器。您应该收到警告不要这样做(因为这是个坏主意)。

如果您提供带有法语语言环境文件的解析格式('ddd MMM DD YYYY HH:mm:ss ZZ')并且不指定输入字符串为英语,则该字符串似乎被解析为它是法语,“Feb”被解析为“janvier”(一月)而不是 février(二月)。

您需要提供输入字符串的解析格式和语言:

moment('Wed Feb 28 2018 16:24:37 GMT+0100 (CET)', 'ddd MMM DD YYYY HH:mm:ss ZZ', 'en')

// Without providing parse format
console.log(moment('Wed Feb 28 2018 16:24:37 GMT+0100 (CET)').format('DD-MM-YYYY HH:mm:ss'));

// With parse format but not input langauge
console.log(moment('Wed Feb 28 2018 16:24:37 GMT+0100 (CET)', 'ddd MMM DD YYYY HH:mm:ss ZZ').format('DD-MM-YYYY HH:mm:ss'));

// With parse format and input langauge (recommended approach)
console.log(moment('Wed Feb 28 2018 16:24:37 GMT+0100 (CET)', 'ddd MMM DD YYYY HH:mm:ss ZZ', 'en').format('DD-MM-YYYY HH:mm:ss'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/locale/fr.js"></script>

关于javascript - 添加时刻语言环境打破初始日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49035350/

相关文章:

JavaScript && 运算符不带 =

reactjs - 跨站点 cookie 问题 : how to set cookie from backend to frontend

mysql - 如何优化搜索可为 null 的开始日期或结束日期的 SQL 查询?

javascript - 从 Twitter API 日期创建 javascript 日期对象——跨浏览器解决方案

javascript - Webpack 4 css 模块类型错误 : Cannot read property 'context' of undefined

javascript - Openlayers 映射特征运动动画动态居中的抖动

reactjs - 引用错误: undefinedcreateProvider is not defined

reactjs - enzyme Jest window.getSelection() 不起作用

php - 最有效的数据库日期存储方法?

javascript - 创建一个 div float 在页面前面的效果(就像一个传统的应用程序)