Skip to content

Parse Dates in Natural Language ๐Ÿ‡ฐ๐Ÿ‡ท๐Ÿ‡บ๐Ÿ‡ธ๐Ÿ‡ฌ๐Ÿ‡ง๐Ÿ‡ฏ๐Ÿ‡ต๐Ÿ‡ซ๐Ÿ‡ท๐Ÿ‡ณ๐Ÿ‡ฑ๐Ÿ‡ท๐Ÿ‡บ

License

Notifications You must be signed in to change notification settings

at-inc/datecapture

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

9 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

datecapture

Parses dates in natural language, especially for Korean. Basically, it's a wrapper of chrono-node along with Korean supportโ€” which is hard to parse due to its grammatical structure.

It is optimized for calendar apps, as it extracts a date interval and an event subject from the text.

Installation

npm i datecapture

Usage

This function takes a natural language date text in string, a base date in Date, and a timezone in string as arguments and returns an object with the following properties:

export interface ParsedDates {
  // The start time of the parsed date interval
  startDate: Date;

  // The end time of the parsed date interval
  endDate: Date;

  // The unit of the mentioned date
  unit: DateUnit;

  // Subject of the calendar event.
  // Use it if it's being used for calendar apps
  subject: string;

  // The date part text extracted from the original text
  dateText: string;

  // The offset of the date text in the original text
  dateOffset: number;
}

Note that it returns startDate, endDate, and unit instead of a single Date object. Since this module was originally designed for calendar apps, having a start and end date for an event is more convenient. If you want to use a single instance, take startDate.

If date is not found, it returns undefined.

Parses Korean date text only.

Example

import { parseDate } from 'datecapture';

const engDate = parseDate('meet jason at tmr 5pm');
// {
//   startDate: 2024-08-07T08:00:00.000Z,
//   endDate: 2024-08-07T09:00:00.000Z,
//   subject: 'meet jason at',
//   unit: 'hour',
//   dateText: 'tmr 5pm',
//   dateOffset: 14
// }

const base = new Date('2024-07-22T00:00:00+09:00');
const koreanDate = parseDate('๋‹ค๋‹ค์Œ์ฃผ ์ˆ˜์š”์ผ 5์‹œ๋ถ€ํ„ฐ 8์‹œ๊นŒ์ง€ ์ œ์ด์Šจ ๋ฏธํŒ…', base, 'Asia/Seoul');
// {
//   startDate: 2024-08-07T08:00:00.000Z,
//   endDate: 2024-08-07T11:00:00.000Z,
//   subject: '์ œ์ด์Šจ ๋ฏธํŒ…',
//   unit: 'hour',
//   dateText: '๋‹ค๋‹ค์Œ์ฃผ ์ˆ˜์š”์ผ 5์‹œ๋ถ€ํ„ฐ 8์‹œ',
//   dateOffset: 0
// }

About

Parse Dates in Natural Language ๐Ÿ‡ฐ๐Ÿ‡ท๐Ÿ‡บ๐Ÿ‡ธ๐Ÿ‡ฌ๐Ÿ‡ง๐Ÿ‡ฏ๐Ÿ‡ต๐Ÿ‡ซ๐Ÿ‡ท๐Ÿ‡ณ๐Ÿ‡ฑ๐Ÿ‡ท๐Ÿ‡บ

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published