chrono는 다양한 형식의 날짜/시간을 처리하고 주어진 텍스트에서 정보를 추출할 수 있도록 설계된 자연어 날짜 파서.
- “Today”, “Tomorrow”, “Yesterday”, “Last Friday” 등의 상대적 날짜 처리
- “17 August 2013 - 19 August 2013”와 같은 날짜 범위 처리
- “This Friday from 13:00 - 16.00”와 같은 시간 포함 날짜 처리
- “5 days ago”, “2 weeks from now”와 같은 상대적 시간 표현 처리
- “Sat Aug 17 2013 18:40:39 GMT+0900 (JST)“와 같은 표준 날짜 형식 처리
- “2014-11-30T08:15:30-05:30”와 같은 ISO 8601 형식 처리
parse(text: string, referenceDate?: ParsingReference | Date, option?: ParsingOption): ParsedResult[] {
// 1. 파싱 컨텍스트 생성
// 2. 모든 파서를 실행하고 결과 수집
// 3. 결과를 인덱스 기준으로 정렬
// 4. 모든 리파이너를 적용하여 결과 개선
// 5. 최종 결과 반환
}
inclusive-dates는 자연어 입력을 지원하는 사용자 친화적이고 완전히 접근 가능한 데이트피커. 내부적으로 chrono를 사용하여 자연어 날짜 입력을 처리. 이는 두 라이브러리의 장점을 결합한 좋은 예시.
const parsedDate = await chronoParseDate(text, {
locale: this.locale.slice(0, 2),
minDate: this.minDate,
maxDate: this.minDate,
referenceDate: removeTimezoneOffset(new Date(this.referenceDate)),
...chronoOptions,
})
- chrono의 강력한 자연어 날짜 파싱 능력을 활용.
- inclusive-dates는 이를 사용자 친화적이고 접근성 높은 UI 컴포넌트로 구현.
이러한 조합을 통해, 개발자들은 사용자에게 직관적이고 유연한 날짜 입력 방식을 제공하면서도 접근성과 사용성을 높일 수 있음.