This commit is contained in:
@@ -8,12 +8,28 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||
const gradeRE = /^[A-Za-z0-9\s-]{1,20}$/;
|
||||
const MIN_AGE = 5, MAX_AGE = 18;
|
||||
|
||||
const parseDateOnly = (value) => {
|
||||
const match = String(value || '').match(/^(\d{4})-(\d{2})-(\d{2})$/);
|
||||
if (!match) return new Date(NaN);
|
||||
return new Date(Date.UTC(Number(match[1]), Number(match[2]) - 1, Number(match[3])));
|
||||
};
|
||||
|
||||
const ageReferenceDate = () => {
|
||||
const configured = window.appConfig?.schoolYearAgeDeadline;
|
||||
const configuredDate = parseDateOnly(configured);
|
||||
if (!isNaN(configuredDate.getTime())) return configuredDate;
|
||||
|
||||
const now = new Date();
|
||||
const year = now.getMonth() >= 8 ? now.getFullYear() : now.getFullYear() - 1;
|
||||
return new Date(Date.UTC(year, 8, 1));
|
||||
};
|
||||
|
||||
const calcAge = (d) => {
|
||||
const dob = new Date(d);
|
||||
const today = new Date();
|
||||
let a = today.getFullYear() - dob.getFullYear();
|
||||
const m = today.getMonth() - dob.getMonth();
|
||||
if (m < 0 || (m === 0 && today.getDate() < dob.getDate())) a--;
|
||||
const dob = parseDateOnly(d);
|
||||
const reference = ageReferenceDate();
|
||||
let a = reference.getUTCFullYear() - dob.getUTCFullYear();
|
||||
const m = reference.getUTCMonth() - dob.getUTCMonth();
|
||||
if (m < 0 || (m === 0 && reference.getUTCDate() < dob.getUTCDate())) a--;
|
||||
return a;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user