chrono-node
Version:
A natural language date parser in Javascript
34 lines (30 loc) • 1.03 kB
text/typescript
import { addDuration } from "./duration";
/**
* Find the most likely year, from a raw number. For example:
* 1997 => 1997
* 97 => 1997
* 12 => 2012
*/
export function findMostLikelyADYear(yearNumber: number): number {
if (yearNumber < 100) {
if (yearNumber > 50) {
yearNumber = yearNumber + 1900;
} else {
yearNumber = yearNumber + 2000;
}
}
return yearNumber;
}
export function findYearClosestToRef(refDate: Date, day: number, month: number): number {
let date = new Date(refDate);
date.setMonth(month - 1);
date.setDate(day);
const nextYear = addDuration(date, { "year": 1 });
const lastYear = addDuration(date, { "year": -1 });
if (Math.abs(nextYear.getTime() - refDate.getTime()) < Math.abs(date.getTime() - refDate.getTime())) {
date = nextYear;
} else if (Math.abs(lastYear.getTime() - refDate.getTime()) < Math.abs(date.getTime() - refDate.getTime())) {
date = lastYear;
}
return date.getFullYear();
}