Blodhemn Skrevet 16. juli 2004 Del Skrevet 16. juli 2004 (endret) Heisann. Jeg har trålet gjennom manualen i noen timer nå og har ikke funnet en funskjon som fjerner leading zeroes i et dato-format. Problemet er at jeg må ha støtte for datoer før 1970 og nesten alle dato-manipulasjonsfunksjonene tar timestamps som parametere. Det kan løses med regular expressions eller et array. Men det nå da finnes enkle funskjoner for denne slags operasjoner? Noen som kan hjelpe? Endret 16. juli 2004 av Blodhemn Lenke til kommentar
Torbjørn Skrevet 16. juli 2004 Del Skrevet 16. juli 2004 på linux går unix timestamp tilbake til 1901 (negative timestamps) hjelper det? mysql regner bak 1970 uten problemer. Lenke til kommentar
Blodhemn Skrevet 16. juli 2004 Forfatter Del Skrevet 16. juli 2004 (endret) Heh... ja, en kunne si det ville ha hjulpet.. Da må jeg ha en feil i scriptet mitt for folk blir ikke ikke eldre enn 34 år. class Age { function calculateAge($date) { $yearNow = date("Y"); $monthNow = date("m"); $dayNow = date("d"); $birthdate = strtotime($date); $year = date("Y", $birthdate); $month = date("m", $birthdate); $day = date("d", $birthdate); if ( $monthNow > $month || ( $monthNow == $month && $dayNow >= $day ) ) return $yearNow - $year; else return $yearNow - $year - 1; } } Kalles med: error_reporting(E_ALL); require_once('data/age.php'); print ( Age::calculateAge("1941-05-18") ); Returnerer: 34 Edit: I ettertid ser jeg jo at strtotime() returner -1 (morro i beregninger) når den ikke klarer gjøre om til timestamp og at det er defor folk ikke blir eldre enn 34. Så det er der problemet ligger. Men om den ikke klarer gjøre om en dato til timestamps så er jeg jo like langt. Endret 16. juli 2004 av Blodhemn Lenke til kommentar
Torbjørn Skrevet 16. juli 2004 Del Skrevet 16. juli 2004 mat inn et datoformat du vil programmet skal støtte da... Lenke til kommentar
Blodhemn Skrevet 16. juli 2004 Forfatter Del Skrevet 16. juli 2004 YYYY-MM-DD: print ( Age::calculateAge("1941-05-18") ); Lenke til kommentar
Blodhemn Skrevet 16. juli 2004 Forfatter Del Skrevet 16. juli 2004 Vet ikke om det har så mye å si, men: SELECT fodselsdato, UNIX_TIMESTAMP( fodselsdato ) FROM personer Gir ikke negativ timestamp på datoer tidligere enn 1970, men 0. Kollonna fodselsdato er i DATE format. Lenke til kommentar
Torbjørn Skrevet 16. juli 2004 Del Skrevet 16. juli 2004 http://dev.mysql.com/doc/mysql/en/Date_and..._functions.html mysql har en bråte med dato og tidsfunksjoner, f.eks select floor(to_days(now())/365 - to_days(fodselsdato)/365) as alder from personer; Lenke til kommentar
Blodhemn Skrevet 16. juli 2004 Forfatter Del Skrevet 16. juli 2004 kommer det fra mysql? Jau, ideen er at det vil komme derfra i allefall, men akkurat nå så mater jeg inn tallet manuelt. Og det hadde jo vært kjekt om jeg kunne gjenbruke klassen i andre operasjoner som ikke nødvendigvis innvolverer en database, Lenke til kommentar
Blodhemn Skrevet 16. juli 2004 Forfatter Del Skrevet 16. juli 2004 http://dev.mysql.com/doc/mysql/en/Date_and..._functions.html mysql har en bråte med dato og tidsfunksjoner, f.eks select floor(to_days(now())/365 - to_days(fodselsdato)/365) as alder from personer; Denne spørringen funket utmerket. Dersom jeg ikke får klassen til å virke så har jeg denne å falle tilbake på. Takk så mye Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå