Hallo,
Wie gesagt ist deine Frage herzlich unkonkret, daher wird das hier zur Ratestunde.
ich habe eine variable wo man sein geburtsdatum angeben kann.
Ich nehme einmal an, du hast ein Formular, in das jemand das Geburtsdatum eingibt und welches du mit JavaScript ausliest, oder du fragst es z.B. mit window.prompt() direkt ab.
Welche Methode auch immer du anwendest, so liegt dir wahrscheinlich eine Zeichenkette vor, die das Geburtsdatum in einem bestimmten Formt enthält, z.B. "05.10.2005".
Um in JavaScript mit Zeitwerten zu rechnen, werden Date-Objekte genutzt. Das Datum, das noch als String vorliegt, muss erst in ein Datumsobjekt umgewandelt werden. Das ist in dem Fall nicht so einfach, weil erst Tag, Monat und Jahr aus dem String extrahieren muss, denn man braucht sie als Zahlen. Wie kommt man also z.B. an "10" für de Monat und darüber an den Zahlwert 5? substr() hilft dabei weiter, die Umwandlung in den Zahlwert übernimmt i.d.R. JavaScript für einen.
Das nötige Schema zur Erzeugung eines Datumsobjekt ist, wie auf der genannten Seite beschrieben:
var neuesDatumsobjekt = new Date(Jahr, Monat, Tag);
Wobei die Monatszählung mit 0 beginnt, Oktober wäre also 9, was man aber z.B. durch den Rechenausdruck
eingabedatum.substr(3, 2) - 1 ergibt "10" - 1 ergibt 9
bekommt.
So bekommt man also ein Datumsobjekt aus dem eingegebenen Datum. Jetzt braucht man noch eines, das die gegenwärtige Zeit enthält. Ein solches entsteht, wenn man new Date() ohne Parameter aufruft (und den Rückgabewert in einer Variable speichert, natürlich).
Diese zwei Datumsobjekte kann man voneinander subtrahieren, um die Differenz zu bekommen. Man vergleicht den Timestamp-Wert (der Link erklärt das) der Daten, siehe die Methode gettTime().
Man bekommt also eine große Nummer, die besagt, wieviele Millisekunden der Mensch schon (ungefähr) lebt. Um daraus ein lesbares Datum zu bekommen, muss man herumrechnen. Ausgehend davon, wieviele Millisekunden ein Jahr hat. Das ist eine einache Division und eine Abrundung.
Mathias