Jeg har en database med registrerte brukere, og databasefeltet for registreringsdato er av type “int”. Hvis man registrerte seg idag så ga datofeltet verdien 1350313106. Jeg ønsker å vise en tekst på nettstedet som dukker opp til registrerte brukere 2 dager etter registrering og som forsvinner etter 4 dager. Hvordan kan jeg konvertere tallet i databasen til dato?
Det skulle vel være unix tid, og det er vel ikke verre enn :
[PHP]<?php
$time = 1350313106;
echo date(“Y-m-d”, $time)
?>[/PHP]
Det står forholdsvis inngående om hvordan man konverterer datoobjekter i PHP manualen ?
[PHP]<?php
$registrert = 1350313106;
$to_dager = date($registrert+172800);
$seks_dager = date($registrert+518400);
$i_dag = time();
if ($i_dag>$to_dager && $i_dag<$seks_dager) {
echo "Det er over to dager og under seks dager siden du registrerte deg !";
}
?>[/PHP]
Det er et unix timestamp, som du kan formatere med date.
Eksempelvis vil dette skrive ut 15.10.2012
[php]echo date(‘d.m.Y’, 1350313106);[/php]
Men det er enklere å regne med datoer i timestamp format, da kan du bare legge til eller trekke fra sekunder.
[php]$registered = 1350313106; // timestamp da registrering skjedde
$now = time(); // timestamp for akkurat nå
$from = 864002; // 86400 er sekunder i et døgn (606024), så altså to dager
$to = 864004; // og fire dager
if (($registered + $from) >= $now && ($registered + $to) <= $now) {
echo “Du registrerte deg for mellom to og fire dager siden”;
}[/php]
Nå går overstående på tid, ikke dato. Ønsker du siste, må du runde av timestampene, enkleste måten er sikkert å kombinere date og strtotime.
[php]$registered = strtotime(date(‘Y-m-d’, 1350313106)); // gir timestamp for 00:00 registreringsdagen[/php]