잠깐만요.js vs Intl 객체
7286 단어 javascript
이전 글에서, 나는 MomentJS를 복제하는 데 사용된 시간 형식을 간략하게 소개했다. 단지 언어에 내장되어 있을 뿐, 반드시 설치해야 하는 라이브러리가 아니다.
사실이 증명하듯이
Intl.DateTimeFormat
모든 형식 코드의% 자모를 기억할 필요가 없는 인간이 읽을 수 있는 방식이 있다.백분율로 시작하는 단일 알파벳을 사용하지 않고 JSON 대상을 전달합니다. 이 대상은 날짜나 시간 단위의 매달, 년, 분 등에 대응하는 키와 문자열 값이 있습니다. 자바스크립트가 몇 자리 수를 사용할 것인지, 짧은 일자/시간 형식을 사용할 것인지, 긴 일자/시간 형식을 사용할 것인지, 대문자인지 소문자인지, AM/PM 시간을 사용할 것인지, 그리고 기타 정보를 알려 줍니다.기본적으로 작성한 객체는 다음과 같습니다.const options = {
dateStyle: 'short',
timeStyle: 'full',
}
또는 이것:const options = {
hour12: true,
day: 'numeric',
month: 'long',
year: '2-digit',
minute: '2-digit',
second: '2-digit',
};
그리고 이 대상을 두 번째 매개 변수로 Intl.DateTimeFormat
구조 함수에 전달한다.첫 번째 매개 변수는 언어와 국가에 특정한 날짜 문자열을 생성하는 데 사용되는 두 문자의 영역 설정입니다.Moment에서 임의의 모양의 문자열을 만들 수 있고 날짜와 시간 형식 단위를 삽입할 수 있지만
Intl.DateTimeFormat()
더욱 엄격해서 실제 유통된 날짜와 시간 기호만 만들 수 있습니다.만약 그것이 코드의 크기를 절약할 수 있다면, 이런 균형은 더욱 좋을 것이다.따라서 Intl.DateTimeFormat
대상을 만들 때, 실제 날짜/시간 문자열을 만드는 것이 아니라, 채우기 문자가 있는 대상입니다. 이 채우기 문자는 DateTimeFormat
대상을 바꾸는 데 적합합니다.그것은 분사Date
보다 더 깨끗해서 우리는 지금 물체를 정확하게 처리할 수 있다.%A, %h
에서 날짜/시간 문자열을 얻으려면 DateTimeFormat
방법을 사용해서 date()
대상을 전달해야 한다.이것은
Date
처럼 간단하게 현재 날짜를 지정할 수도 있고, Date()
구조 함수에서 년, 월, 일, 시간 등을 지정하여 특정 시간 단위의 숫자를 전달할 수도 있으며, 가장 왼쪽의 시간 단위는 강제적이며, 가장 오른쪽의 시간 단위는 선택할 수 있다.내가 말하고 싶은 것은, 너는 달과 연도만 있는 Date()
대상을 만들 수 있고, 어떠한 날짜나 세분도 없는 시간치를 만들 수 있지만, 너는 달만 있고 연도가 없는 Date
대상을 만들 수 없다.Date 및 DateTimeFormat에 대한 자세한 내용은 제공된 MDN 설명서를 참조하십시오.
이 momentJS 세션을 보십시오:
moment().subtract(6, 'days').calendar();
요일과 하루 중 시간에 따라 Date
같은 내용을 인쇄할 것이다.우리는 Last Friday at 9:35 PM
포맷 코드의 포맷 날짜와 시간 단위를 어떻게 사용하는지 알고 있습니다. 만약 이 코드가 무엇인지 기억하지 못하신다면, 이 코드 목록을 모두 얻기 위해 최근 strftime
매뉴얼 페이지를 찾아보는 것이 좋습니다.계산의 까다로운 부분은 일주일의 상대적인 달력일이다.그것의 독법
man 3 strftime
에 주의해라Last Friday
뿐만 아니라.이런 날짜 단위의 형식 코드가 인쇄되지 않았습니다.반대로, 우리는 반드시 정성스럽게 작성된 코드에 의존해서 이 일을 완성해야 한다. 이것은 MomentJS가 지금까지 해 온 것과 차이가 많지 않지만, 만약 일주일 동안의 상대적인 달력일이 필요하지 않다면, 당신이 배치한Javascript에 이 코드가 없으면 대량의 공간을 절약할 수 없다.새로운 함수를 제시하여 그것을 계산하려 하기보다 (시간의 가치를 위해, 나는 심지어 MomentJS 소스 코드에서 직접 추출할 수 있다), 나는 이러한 관점을 선택할 것이다. 만약 상대적인 달력의 날짜와 시간을 인쇄하는 것이 이렇게 복잡해지고, 이러한 지원이 필요하다면, MomentJS를 사용하는 것이 가장 좋다.그것은 결코 언젠가는 사라지는 것이 아니다.단, 자바스크립트는 폼
Friday
, 2 days ago
, yesterday
와 tomorrow
의 상대적인 날짜와 시간을 출력할 수 있다. 대상2 days from now
을 하나만 만들면 된다.(학점:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/RelativeTimeFormat
const rtf = new Intl.RelativeTimeFormat("en", {
localeMatcher: "best fit",
numeric: "auto", // change to "always" if you want 1 day ago/from now
// instead of yesterday/tomorrow
style: "long",
});
// Format relative time using negative value (-1).
rtf.format(-1, "day");
// > "1 day ago"
// Format relative time using positive value (1).
rtf.format(1, "day");
// > "in 1 day"
중요한 힌트: 영어는 유일한 가능한 언어 환경이 아니며 모든 국가 코드를 사용할 수 있다.다음 글은 Luxon,
Intl.RelativeTimeFormat
대상을 둘러싼 포장기에 대해 토론하겠습니다.이 라이브러리가 Intl
완성하지 못한 일들을 볼 수 있는지, 더 큰 배치 코드의 크기를 따져야 하지만, MomentJS보다 작을 것이다.
Reference
이 문제에 관하여(잠깐만요.js vs Intl 객체), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/zenulabidin/moment-js-vs-intl-object-4f8n텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)