Code: Select all
function parseNBDate(dateStr, dots = true, yearFirst = false) {
if (!dateStr) return null;
const separator = dots ? '.' : '-';
const parts = dateStr.split(separator);
if (parts.length !== 3) return null;
let day, month, year;
//
if (yearFirst) {
year = parseInt(parts[0], 10);
month = parseInt(parts[1], 10);
day = parseInt(parts[2], 10);
} else {
day = parseInt(parts[0], 10);
month = parseInt(parts[1], 10);
year = parseInt(parts[2], 10);
}
// 3. Handle 2-digit years if necessary
if (year < 100) {
year += 2000; // Assumes 21st century (e.g., 25 -> 2025)
}
// Validate ranges
if (isNaN(day) || isNaN(month) || isNaN(year) ||
day < 1 || day > 31 ||
month < 1 || month > 12 ||
year < 2000 || year > 9999) { return null; }
//
return new Date(year, month - 1, day);
}