---
title: "Räkna ut ålder från personnummer?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/142055-räkna-ut-ålder-från-personnummer"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "bassebhu"
published: "2006-02-05T22:21:14.000Z"
updated: "2009-05-24T11:36:43.000Z"
replies: 14
views: 3577
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/142055-räkna-ut-ålder-från-personnummer"
---

# Räkna ut ålder från personnummer?

## #1 — bassebhu, 2006-02-05T22:21Z

Hej alla glada!

Jag sökte och hittade en del ämnen om detta, men bara i SQL-form.
Jag undrar hur man räknar ut hur gammal en person är om man har dennes födelsedata i den här formen: 800101

Att bara använda 80 för att räkna ut att snubben är 26 år är inte tillräckligt. Jag vill att den ska slå om precis på födelsedagen.

Tackar för svar!

Permalänk: https://www.webforum.nu/p/142055

## #2 — Melea, 2006-02-06T06:46Z

Något åt det här hållet borde funka, inte testat.
Men då måste du spara personnummret med seklet inräknat, typ 1980.

```
SELECT (LEFT(CURDATE(),4)-LEFT(birth,4)) - (RIGHT(CURDATE(),5)<RIGHT(birth,5)) AS age FROM table
```

Permalänk: https://www.webforum.nu/p/1761368

## #3 — Lasp, 2006-02-06T07:00Z

Du har ju hela veckan på dig.  Det är ju inte förrän den femtonde!

Permalänk: https://www.webforum.nu/p/1761369

## #4 — bassebhu, 2006-02-06T09:12Z

Jo, fast jag ville ju inte ha som en SQL-fråga. Jag vill ha en php-funktion som man kör på ett recset innehållandes 6 siffror: 800101.

> **Lappe skrev:**
>
> Du har ju hela veckan på dig. Det är ju inte förrän den femtonde!

?

Permalänk: https://www.webforum.nu/p/1761394

## #5 — Lasp, 2006-02-06T09:14Z

;) \> bassebhu   Kolla profilen för vänstertecknad  ;) 
På skoj  :e

Permalänk: https://www.webforum.nu/p/1761396

## #6 — Fredde Mannen, 2006-02-06T09:53Z

> **bassebhu skrev:**
>
> Hej alla glada!
> 
> Jag sökte och hittade en del ämnen om detta, men bara i SQL-form.
> Jag undrar hur man räknar ut hur gammal en person är om man har dennes födelsedata i den här formen: 800101
> 
> Att bara använda 80 för att räkna ut att snubben är 26 år är inte tillräckligt. Jag vill att den ska slå om precis på födelsedagen.
> 
> Tackar för svar!

Räknar visserligen inte ut åldern från 820729, eftersom vi inte vet om de är födda på 2000-talet eller 1900-talet!

```php
<?php
$alder = "19820729";

echo get_age($alder);

function get_age($thedate) {
    $age = floor((date("Ymd")-intval($thedate))/10000);

    if($age < 0)  {
        return FALSE;
    } else {
        return $age;
    }
return FALSE;
}

?>
```

Permalänk: https://www.webforum.nu/p/1761410

## #7 — Melea, 2006-02-06T09:56Z

Missade visst att det inte var SQLform du var ute efter. :)

```
function getage($b) {

    return date("Y") - ($b{0}.$b{1}.$b{2}.$b{3}) - (date("m") < ($b{5}.$b{6}) || (date("m") == ($b{5}.$b{6}) && date("d") < ($b{8}.$b{9})));

}
```

Permalänk: https://www.webforum.nu/p/1761411

## #8 — GunnarD, 2006-02-06T09:58Z

Titta på kommentarerna på denna sida för hur man kan räkna ut det: <http://se.php.net/manual/en/function.getdate.php>

Permalänk: https://www.webforum.nu/p/1761412

## #9 — fiddler, 2006-02-06T11:17Z

Så länge personen inte är 100+ så kan man väl göra såhär:

```php
<?
function get_age($date)
{
	$age = floor((date('ymd') - $date)/10000);
	if(($age) < 0)
		$age = 100 + $age;
	return $age;
}

print "Du är ".get_age('800101')." år.";
?>
```

Permalänk: https://www.webforum.nu/p/1761432

## #10 — bassebhu, 2006-02-06T20:56Z

> **Melea skrev:**
>
> Missade visst att det inte var SQLform du var ute efter. :)
>
> ```
> function getage($b) {
> 
>     return date("Y") - ($b{0}.$b{1}.$b{2}.$b{3}) - (date("m") < ($b{5}.$b{6}) || (date("m") == ($b{5}.$b{6}) && date("d") < ($b{8}.$b{9})));
> 
> }
> ```

Funkade inte, såvida jag inte gjorde fel, om det nu är möjligt att göra fel på det.

Fiolgnidarens lösning funkade hur som helst! Tack :)

Permalänk: https://www.webforum.nu/p/1761620

## #11 — fiddler, 2006-02-06T21:05Z

> **bassebhu skrev:**
>
> Fiolgnidarens...

"Fåret glädja oss även efter dess död genom den ljuvliga klangen från dess tarmar."

Permalänk: https://www.webforum.nu/p/1761629

## #12 — bassebhu, 2006-02-06T21:09Z

> **fiddler skrev:**
>
> "Fåret glädja oss även efter dess död genom den ljuvliga klangen från dess tarmar."

Fast jag är mer förtjust i fårfioler än sensträngar :e

Permalänk: https://www.webforum.nu/p/1761633

## #13 — Melea, 2006-02-06T21:24Z

Det bör funka om du har 19 eller 20 innan. :)
Annars kan du ju göra såhär

```php
function getage($b) {

    return date("Y") - ('19'.$b{0}.$b{1}) - (date("m") < ($b{2}.$b{3}) || (date("m") == ($b{2}.$b{3}) && date("d") < ($b{4}.$b{5})));

}

echo 'Du är '.getage('850215').' år gammal.';
```

Men fiddlers variant är att föredra. :)

Permalänk: https://www.webforum.nu/p/1761639

## #14 — MickeA.com, 2009-05-24T09:25Z

Jag har en databas med medlemmar där personnumret sparas i följande form:

```
YYMMDDNNNN
```

Sen använder jag det här för att kolla om personen är yngre än 18 år:

```php
$birthstamp = mktime(0, 0, 0, $user_birth_d, $user_birth_m, $user_birth_y);
$diff	    = time() - $birthstamp;
$age_years  = floor($diff / 31556926);
if($age_years < 18) {
	$mandatory = " <span class=\"mandatory\">*</span>";
}
```

Men nu tänkte jag istället införa så att personnumret måste formateras såhär:

```
YYYYMMDDNNNN
```

Finns det någon smidigt sätt att uppdatera "alla" med rätt 19/20 framför? Det finns ingen som är äldre än 100år, så det bör finnas något halvautomatiskt sätt, men jag har slut på idéer.

Tack!

Permalänk: https://www.webforum.nu/p/2185644

## #15 — Melea, 2009-05-24T11:36Z

Borde det inte vara relativt enkelt, typ?

```php
if (substr($age, 0, 2) > 10) {
   // sql för att uppdatera alla personnummer med 19 innan.
} else {
  // 20 innan
}
```

Permalänk: https://www.webforum.nu/p/2185649

---

Tråden på webben: https://www.webforum.nu/amne/php/142055-räkna-ut-ålder-från-personnummer
