[javascript] moment.js의 언어를 어떻게 변경합니까?

moment.js에 의해 설정된 날짜의 언어를 변경하려고합니다. 기본 언어는 영어이지만 독일어를 설정하고 싶습니다. 이것들은 내가 시도한 것입니다 :

var now = moment().format("LLL").lang("de");

주고 NaN있습니다.

var now = moment("de").format("LLL");

이것은 심지어 반응하지 않습니다.

var now = moment().format("LLL", "de");

변경 사항 없음 : 여전히 영어로 결과가 생성됩니다.

이것이 어떻게 가능한지?



답변

(당신은 moment.lang 필요 경고가 : lang()순간부터 사용되지 않으며 2.8.0, 사용 locale()대신) :

moment.lang("de").format('LLL');

http://momentjs.com/docs/#/i18n/


v2.8.1부터는 moment.locale('de')현지화를 설정하지만 a를 반환하지는 않습니다 moment. 몇 가지 예 :

var march = moment('2017-03')
console.log(march.format('MMMM')) // 'March'

moment.locale('de') // returns the new locale, in this case 'de'
console.log(march.format('MMMM')) // 'March' still, since the instance was before the locale was set

var deMarch = moment('2017-03')
console.log(deMarch.format('MMMM')) // 'März'

// You can, however, change just the locale of a specific moment
march.locale('es')
console.log(march.format('MMMM')) // 'Marzo'

요약 locale하면 전역을 호출 moment하면 이후의 모든 moment인스턴스에 대한 로캘이 설정 되지만의 인스턴스는 반환하지 않습니다 moment. locale인스턴스를 호출 하면 해당 인스턴스에 대해 설정되고 해당 인스턴스를 반환합니다.

또한 Shiv가 의견에서 말했듯이 “moment.min.js”가 아닌 “moment-with-locales.min.js”를 사용해야합니다. 그렇지 않으면 작동하지 않습니다.


답변

나는 언어도 가져와야했다.

import moment from 'moment'
import 'moment/locale/es'  // without this line it didn't work
moment.locale('es')

그런 다음 평소처럼 순간을 사용하십시오

alert(moment(date).fromNow())


답변

가장 빠른 방법 : Bower로 설치

방금 bower로 순간을 설치 de.js하고 내 HTML 프로젝트에서 javascript 리소스로 연결 했습니다.

bower install moment --save

또한 수동으로 다운로드 할 수 있습니다 moment.jsde.js.

프로젝트에서 ‘de.js’연결

de.js메인 프로젝트 파일에서 링크를 연결하면 모멘트 클래스 및 해당 메소드에 대한 모든 액세스의 로케일이 자동으로 변경되었습니다.

없을 것이다 더 이상 필요 을 할 수 moment.locale("de").또는
moment.lang("de"). 소스 코드입니다.

원하는 로케일을 다음과 같이 연결하십시오.

<script src="/bower_components/moment/moment.js"></script>
<script src="/bower_components/moment/locale/de.js"></script>

또는 bower_components마우스 오른쪽 버튼 클릭을 통해 moment.js 1990ies 스타일을 다운로드 한 경우 경로 없이 라이브러리를 링크 할 수 있습니다. 이는 대부분의 시나리오에서 여전히 잘 작동합니다.


답변

momentjs 2.8 이상으로 다음을 수행하십시오.

moment.locale("de").format('LLL');

http://momentjs.com/docs/#/i18n/


답변

moment.lang(navigator.language)스크립트 를 추가해야합니다 .

또한 표시하려는 각 국가 로캘을 추가해야합니다. 예를 들어 GB 또는 FR의 경우 해당 로캘 형식을 moment.js 라이브러리에 추가해야합니다. 그러한 형식의 예는 momentjs 문서에서 사용할 수 있습니다. moment.js에이 형식을 추가하지 않으면 항상 현재 보이는 유일한 로케일이므로 항상 미국 로케일을 선택합니다.


답변

2017/2018 끝 : 다른 답변에는 너무 오래된 코드가 편집되어 있으므로 여기에 다른 대안이 있습니다.

와 함께

let moment = require('moment');
require('moment/locale/fr.js');
// or if you want to include all locales:
require("moment/min/locales.min");

수입

import moment from 'moment';
import 'moment/locale/fr';
// or if you want to include all locales:
require("moment/min/locales.min");

사용하다:

moment.locale('fr');
moment().format('D MMM YY');  // Correct, set default global format 
// moment.locale('fr').format('D MMM YY') //Wrong old versions for global default format

시간대

* 필요 :

require('moment-range');
require('moment-timezone');

*수입:

import 'moment-range';
import 'moment-timezone';

사용 영역 :

const newYork    = moment.tz("2014-06-01 12:00", "America/New_York");
const losAngeles = newYork.clone().tz("America/Los_Angeles");
const london     = newYork.clone().tz("Europe/London");

날짜 형식을 지정하는 기능

const ISOtoDate = function (dateString, format='') {

 // if date is not string use conversion:
 // value.toLocaleDateString() +' '+ value.toLocaleTimeString();

  if ( !dateString ) {
    return '';
  }

  if (format ) {
    return moment(dateString).format(format);
  } else  {
    return moment(dateString);  // It will use default global format
  }
};


답변

유성 사용자 :

moment 로케일은 meteor에 기본적으로 설치되지 않으며 기본 설치로 ‘en’로케일 만 얻습니다.

따라서 다른 답변에서 올바르게 표시된 코드를 사용하십시오.

moment.locale('it').format('LLL');

필요한 로케일을 설치할 때까지 영어로 유지됩니다.

유성 에 순간 마다 개별 로케일을 추가하는 훌륭하고 깨끗한 방법이 있습니다 ( rzymek 제공 ).

다음과 같이 일반적인 유성 방식으로 모멘트 패키지를 설치하십시오 .

meteor add rzymek:moment

그런 다음 이탈리아어와 같이 필요한 로케일을 추가하십시오.

meteor add rzymek:moment-locale-it

또는 사용 가능한 로케일을 모두 추가하려면 (페이지에 약 30k 추가) :

meteor add rzymek:moment-locales