簡體   English   中英

添加瞬間語言環境打破初始日期

[英]Adding moment locale break the initial date

我暫時無法解決一個奇怪的問題:

我有我的約會日期: Wed Feb 28 2018 16:24:37 GMT+0100 (CET)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.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> 

嘗試這樣的事情(我們需要從moment/locale/fr導入,以確保它在客戶端加載)。 因此,以英語解析,然后將語言環境切換為所需的語言環境,然后使用fromNow輸出fromNow

import moment from 'moment';
import momentFr from 'moment/locale/fr';

const Time = ({ time }) => (
    <p>
        {moment(time, 'ddd MMM DD YYYY HH:mm:ss Z').locale('fr').fromNow()}
    </p>
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM