Luxon 초기 소개 (Moment 팀 날짜 다른 라 이브 러 리)
4528 단어 자바 script
Luxon 은 Moment 프로젝트 의 한 관리자 가 개발 한 것 으로 그의 개인 적 인 생각 에 따라 개선 되 었 습 니 다. 가 변성 을 제외 하고 사용 하 는 도 구 를 업 데 이 트 했 고 시간 대 에 가서 더 좋 은 조정 을 시 도 했 습 니 다. 구체 적 으로 작가 의 원문 설명 을 봐 야 합 니 다.https://moment.github.io/luxo...
Luxon 과 Moment 의 차이 점.
문서 에 상세 한 설명 이 있 습 니 다.https://moment.github.io/luxo...가장 뚜렷 한 예 는 바로 불변성 (Immutability) 이다. 예 를 들 어 Moment 에서 시간 을 수정 하 는 것 이다.
var m1 = moment();
var m2 = m1.add(1, 'hours');
m1.valueOf() === m2.valueOf(); //=> true
원래 의 대상 은 수 정 됩 니 다. 그러나 Luxon 에서 오래된 대상 은 변 하지 않 습 니 다.
var d1 = DateTime.local();
var d2 = d1.plus({ hours: 1 });
d1.valueOf() === d2.valueOf(); //=> false
이렇게 하면 낡은 시간의 추이 에 근거 하여 새로운 시간 을 계산 할 때 낡은 데이터 가 의외로 수 정 될 까 봐 걱정 할 필요 가 없다.
API 스타일 에 도 적지 않 은 조정 이 있 습 니 다. 예 를 들 어
DateTime
라 는 대상 입 니 다. 전체적으로 Luxon 의 이름 이 상대 적 으로 수 다스 러 운 것 같 습 니 다. 아마도 더 정확 하기 위해 서 일 것 입 니 다.좋 은 점 은 읽 기
m.year
가 Getter 인 터 페 이 스 를 사용 한 것 일 수도 있 습 니 다. 이것 은 좀 더 간단 합 니 다. 위의 링크 에 상세 한 설명 이 있 습 니 다.https://moment.github.io/luxo... 그리고 코드 의 부 피 를 봤 는데 더 커 보 였 어 요. 어차피 둘 다 큰 데..https://cdnjs.cloudflare.com/...https://moment.github.io/luxo...
참조 코드
Luxon 에 서 는 주로
DateTime
부터 호출 되 는데 플랫폼 에 따라 쓰기 가 다 르 기 때문에 주로 ES6 의 문법 인용 DateTime
대상 을 사용 합 니 다.var DateTime = luxon.DateTime;
const { DateTime } = require('luxon');
import { DateTime } from 'luxon';
ClojureScript 에서 shadow - cljs 를 빌 렸 다 면 이렇게 쓸 수 있 습 니 다.
(ns app (:require ["luxon" :refer [DateTime]]))
(.log js/console (.local DateTime))
생 성 날짜 의 대상
Luxon 에 서 는 사용 하지 않 는 형식 에 대한 구분 이 필요 합 니 다.
DateTime.local() // Date.now()
DateTime.fromISO(String)
DateTime.fromObject(Object) // fromJSDate(date: Date, options: Object): DateTime
DateTime.fromMillis(Number)
DateTime.fromJSDate(Date)
실제 호출 결과:
coffee> DateTime.local()
DateTime {
ts: 2018-02-21T14:44:35.186+08:00,
zone: Asia/Shanghai,
locale: en-US }
coffee> date = new Date
2018-02-21T06:45:13.151Z
coffee> DateTime.fromJSDate(date)
DateTime {
ts: 2018-02-21T14:45:13.151+08:00,
zone: Asia/Shanghai,
locale: en-US }
coffee> str = date.toISOString()
'2018-02-21T06:45:13.151Z'
coffee> DateTime.fromISO str
DateTime {
ts: 2018-02-21T14:45:13.151+08:00,
zone: Asia/Shanghai,
locale: en-US }
좀 더 구체 적 인 용법 을 사용 하면 API 문 서 를 뒤 집 을 수 있 습 니 다.https://moment.github.io/luxo...
포맷 날짜
내 장 된 형식 은 별로 연구 하지 않 았 습 니 다. 업무 가 별로 필요 하지 않 아 보 입 니 다. 형식 을 제공 하 는 것 은 적지 않 지만,
dt.toISO(); //=> '2017-04-20T11:32:00.000-04:00'
날짜 의 포맷 은
dt.toFormat
방법 을 통 해 이 루어 집 니 다. 유사 m.format
하고 디 테 일 은 작은 차이 가 있 지만 문 서 를 참고 하여 쓰 십시오.https://moment.github.io/luxo... DateTime.local().toFormat("HH 'hours and' mm 'minutes'") //=> '20 hours and 55 minutes'
날짜 조작
문서 참조https://moment.github.io/luxo...
DateTime.local(2017, 2, 13).plus({ months: 1 }).toISODate() //=> '2017-03-13'
d1 < d2 // is d1 before d2?
d1.hasSame(d2, 'milllisecond'); // equivalent to `+d1 === +d2`
d1.hasSame(d2, 'minute'); // both DateTimes are in the same minute (and hour, day, month, etc)
d1.hasSame(d2, 'year'); // etc
Luxon 에 Duration 에 관 한 계산 이 있어 서 잘 모 르 겠 어 요. 제 가 직접 몇 가지 예 를 들 어 봤 는데...https://moment.github.io/luxo...
var dur = Duration.fromObject({ days: 3, hours: 6})
dur.as('minutes') //=> 4680
var end = DateTime.fromISO('2017-03-13');
var start = DateTime.fromISO('2017-02-13');
var diffInMonths = end.diff(start, 'months');
diffInMonths.toObject(); //=> { months: 1 }
기타
나 는 또 하나의 기능 이 다 중 언어 라 고 생각 할 수 있다. 왜냐하면 Moment 에서 쉽게 사용 할 수 있 기 때문이다. 문 서 를 넘 기 면 넘 기지 않 고 운영 체제 API 를 통 해 다 중 언어 를 처리 하 는 설명 만 있 을 뿐 잘 모른다.https://moment.github.io/luxo...
시간 대 에 대해 서 는 Luxon 에서 직접 지원 을 해 주 셔 서 내용 이 많아 보이 지만 잘 모 르 겠 습 니 다.https://moment.github.io/luxo...
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Thymeleaf 의 일반 양식 제출 과 AJAX 제출텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.