Vise alder med time() ?

Mr Vest

Sjefen over alle sjefer!
Jeg vet ikke om jeg muligens har klart og drite meg litt ut. Nå er det jo slik at time() viser antall sekunder fra 01.01.1970.

Når en bruker registrerer seg på mitt nettsted har jeg 3 selectbokser hvor de velger dato, mnd og år. Straks de sender inn skjemaet gjør jeg om verdien fra disse tre boksene til antall sekunder fra 01.01.1970 med mktime(). Deretter tenkte jeg altså og vise hvor gammel disse folka er ved hjelp av resultatet mktime() har gitt meg.

Uhm... (flau over meg selv), Hva gjør jeg når gamlingene over 39år registrerer seg?
 

Mr Vest

Sjefen over alle sjefer!
Mener du full dato som f.eks 10101987 eller mener du at jeg skal legge det opp i et slikt datetime felt? Hva kan jeg da bruke for å regne ut alderen?
 

Nextri

Rebel
i mysql kan du enten velge datatype date, eller datetime. Det går an å sortere på disse feltene. Du vil ikke kunne sortere på et varchar felt der du lagrer datoen som en string.

når du henter ut datoen kan du i php bruke $timestamp = strtotime($dato) for å få datoen om til en timestamp igjen. og bruk den til å regne ut alderen.

og en timestamp får du om til dato ved å bruke date('Y-m-d H:i:s',$timestamp);
 

Mr Vest

Sjefen over alle sjefer!
Hmm. Jeg har noen slike greier som time() gir meg lagret i varchar-felt, som jeg da bruker date() for å gjøre om til dato og det funker supert, men om jeg ikke burde gjøre det slik i denne situasjonen så er det virkelig bra du sier ifra.

Men denne løsninga vil vel kun fortelle meg fødselsdatoen? Vil det da holde at jeg tar dato,år i dag minus dato,år de er født for å vise alderen, eller er jeg langt ute på jordet?
 

Nextri

Rebel
lagre datoen i et date felt. i formatet YYYY-MM-DD

Ikke bruk varchar felt eller timestamp.

når du skal vise alderen på siden, bruker du en funksjon som gjør dato om til alder. f.eks. denne:

PHP:
	function age($date){
		$timestamp = strtotime($date);
		$diffYear  = date('Y') - date('Y', $timestamp);
		$diffMonth = date('n') - date('n', $timestamp);
		$diffDay   = date('j') - date('j', $timestamp);
		if($diffMonth < 0 || ($diffMonth == 0 && $diffDay < 0)) {
			$diffYear--;
		}
		return $diffYear;
	}
 

Mr Vest

Sjefen over alle sjefer!
Takker så mye. Nå vet jeg hvertfall hvordan jeg skal ta den biten der når jeg kommer til den. Kjempebra. Ryktepoeng kommer når jeg får lov å gi deg ryktepoeng. :)
 

Mr Vest

Sjefen over alle sjefer!
Det var jo gjerne også noe ja. Microtime må sies og være en funksjon jeg ikke har giddet å lese noe om. Lurer på om årsak kan være at jeg ikke liker mat som er varmet opp i mikrobølgeovn noe særlig. Jeg bruker nok den løsninga Zolic. Ryktepoeng gitt. :)
 
Topp