27 lines
1.0 KiB
JavaScript
27 lines
1.0 KiB
JavaScript
/**
|
|
* Convert 2-digit year to 4-digit year
|
|
* By default, 2-digit year will be converted to a year in the 100-year
|
|
* period ending 50 years after the current year. The target 100-year period
|
|
* can be changed by specifying base date and the length of the future side.
|
|
* @param {Number} year - 2-digit year
|
|
* @param {Number} [futureSideSpan] - number of yeas in the future side of
|
|
* the target 100-year period. Default: 50
|
|
* @param {Date} [baseDate] - base date to caliculate the target 100-year
|
|
* period. if omitted, the current date is used.
|
|
* @return {Number} 4-digit year
|
|
*/
|
|
export function twoDigitToFullYear(year, futureSideSpan = 50, baseDate = undefined) {
|
|
if (isNaN(year) || year > 99 || year < 0) {
|
|
return year;
|
|
}
|
|
|
|
const date = baseDate instanceof Date && !isNaN(baseDate) ? baseDate : new Date();
|
|
const currentYear = date.getFullYear();
|
|
const endOfCurrent = currentYear + futureSideSpan;
|
|
let century = Math.floor(endOfCurrent / 100) * 100;
|
|
if (year > endOfCurrent % 100) {
|
|
century -= 100;
|
|
}
|
|
return year + century;
|
|
}
|