Fuzzy Dates
Parse/compare fuzzy dates
Usage
When you parse a string you will get back a Date object with a fuzzy boolean property attached.
const FuzzyDates = require('@abcnews/fuzzy-dates');
FuzzyDates.parse('January 10, 2017');
FuzzyDates.parse('10 January, 2017');
FuzzyDates.parse('10 January 2017');
FuzzyDates.parse('Tuesday January 10th 2017');
FuzzyDates.parse('Jan 10th 2017');
FuzzyDates.parse('Jan 2017');
FuzzyDates.parse('February 2');
FuzzyDates.parse('February 2', new Date(2015, 1, 1));
FuzzyDates.parse('10am January 1, 2015');
FuzzyDates.parse('1pm January 1, 2015');
FuzzyDates.parse('Early March, 2017');
FuzzyDates.parse('Mid January, 2017');
FuzzyDates.parse('Late February, 2017');
You can use compare to sort fuzzy dates (along with normal dates):
const FuzzyDates = require('@abcnews/fuzzy-dates');
[
FuzzyDates.parse('1st Feb, 2017'),
FuzzyDates.parse('Early Feb, 2017'),
FuzzyDates.parse('March 12, 2017');
FuzzyDates.parse('16 March, 2017'),
FuzzyDates.parse('Mid March, 2017'),
FuzzyDates.parse('November 8th', new Date(2016, 1, 1)),
FuzzyDates.parse('November 30, 2018'),
FuzzyDates.parse('Late November, 2018'),
FuzzyDates.parse('Late November, 2019')
].sort(FuzzyDates.compare);
You can also output a date in a nice and simple format
const FuzzyDates = require('@abcnews/fuzzy-dates');
let date = FuzzyDates.parse('10 March 2015');
FuzzyDates.formatDate(date);
date = FuzzyDates.parse('2017, Late November');
FuzzyDates.formatDate(date);
Authors