Fødselsnummer - gutt/jente - alder

Ikke sikkert det er en løsning for deg, men en vei rundt at det står 24 år og 6 måneder før man fyller ut kan jo være å skjule det feltet helt til fnr er fyllt ut?

Jeg fant tidligere et eksempel (Regne ut fødelsdato med riktig århundre) hvor man benytter skatteetatens regler for å beregne alder som jeg kopierte og tilpasset. Jeg har et skript som sjekker om en person er over eller under 18 år.

Legger det ved her så kan man bruke/tilpasse om ønskelig.

//Beregning av om person er over 18 år til og med dagens dato

//Henter dagens dato for sammenligning
var dagensdato = now();
var dag = getday(dagensdato);
var maaned = getmonth(dagensdato);
var aar = getyear(dagensdato);

//henter fnr til den innloggede brukeren
var fnr=Kopi_fnr;  
var fdag=substr(fnr,0,2);  
var fmaaned=substr(fnr,2,2); 
var arstall=int(substr(fnr,4,2)); 
var individnr=substr(fnr,6,3);  //henter individnummeret for sjekk iht skatteetatens regler

//SKatteetatens regler pr 07.07.2022
//1854-1899, brukes serien 749-500
//1900-1999, brukes serien 499-000
//1940-1999, brukes også serien 999-900
//2000-2039, brukes serien 999-500


//beregner århundre basert på S-etatens regler
var arhundre; 
var faar;

if(individnr>=500 && individnr<=749 && arstall>=54 && arstall<=99){arhundre=1800};
if(individnr>=0 && individnr<=499 && arstall>=0 && arstall<=99){arhundre=1900};
if(individnr>=900 && individnr<=999 && arstall>=40 && arstall<=99){arhundre=1900};
if(individnr>=500 && individnr<=999 && arstall>=0 && arstall<=39){arhundre=2000};

faar=(arhundre)+(arstall); 

//Genererer fødselsdato med korrekt århundre => date(år,mnd,dag)
var fdato = date(faar,fmaaned,fdag);


//Sammenligne fødselsår med nåværende år
//Først sjekke om vedkommende er over 18 - i så fall er saken grei
if(aar - faar > 18)
{
	return true;
};


//Sjekke om vedkommende fyller 18 dette året - i så fall må vi sammenligne måneder og, hvis nødvendig, dag
if(aar - faar == 18)
{
	if(maaned - fmaaned > 0)
	{
		return true;
	};
	
	if(maaned - fmaaned < 0)
	{
		return false;
	};
	
	//Dersom vedkommende har dag i inneværende måned må vi sjekke dag for å finne ut om vedkommende er over 18 år
	if(maaned - fmaaned == 0)
	{
		if(dag - fdag > 0)
		{
			return true;
		};
		
		if(dag - fdag < 0)
		{
			return false;
		}
		
		if(dag - fdag == 0)
		{
			return true;
			//gratulerer med dagen
		};
	};
};

//Sjekke om vedkommende er under 18 dette året - i så fall returnerer vi false siden vedkommende er under 18
if(aar - faar < 18)
{
	return false;
};
return false;