Avatar billede Slettet bruger
22. juli 2010 - 17:16 Der er 5 kommentarer

Udløbsdage for abbonnement

Hej!
Jeg har et system hvor jeg har "startdato" og "slutdato" i min db, begge angivet som time()-value, f.eks 10293940.

Hvordan tæller jeg dagene fra startdato til slutdato?

Sådan der står f.eks "Abbonnement udløber om x dage"?
Avatar billede claes57 Ekspert
22. juli 2010 - 17:49 #1
alt andet lige, så skal du tælle fra dagsdato til udløb. Ellers vil den altid skrive 'udløber om 2 år'
koden er fx
Try this for finding the difference in days between 2 dates/datetimes... take note though, date_parse requires PHP version 5.1.3 or higher.

<?php
/**
* Finds the difference in days between two calendar dates.
*
* @param Date $startDate
* @param Date $endDate
* @return Int
*/
function dateDiff($startDate, $endDate)
{
    // Parse dates for conversion
    $startArry = date_parse($startDate);
    $endArry = date_parse($endDate);

    // Convert dates to Julian Days
    $start_date = gregoriantojd($startArry["month"], $startArry["day"], $startArry["year"]);
    $end_date = gregoriantojd($endArry["month"], $endArry["day"], $endArry["year"]);

    // Return difference
    return round(($end_date - $start_date), 0);
}
?>

gaflet fra http://php.net/manual/en/function.date.php
indlæg:
phprocks at aol dot com
06-Aug-2008 06:25

(så hvis det ikke virker, så er det ikke min skyld)
Avatar billede claes57 Ekspert
22. juli 2010 - 17:50 #2
og der er kun et b i Abonnement
Avatar billede silwing Nybegynder
22. juli 2010 - 22:37 #3
Egentlig kan det gøres langt mere simpelt når udløbsdatoen er angivet i time() format :)

$sekunder = $slut_dato - time();
$dage = $sekunder / 60 / 60 / 24;

Ovenstående vil give et kommatal, men funktionen floor() kan snildt bruges til at runde det af til nærmeste hele dag :)
Avatar billede showsource Seniormester
23. juli 2010 - 14:19 #4
Du kan:

$sql = "SELECT DATEDIFF(FROM_UNIXTIME(slutdato), CURDATE()) as dage FROM exp_914659";

$row = mysql_query($sql) or die (mysql_error());
echo mysql_result($row,0);

Og jeg vil da anbefale at du bruger standard sql dato format, YYYY-MM-DD i stedet for.

Hvis du har brug for også at vide tiden, timer/minutter, er det TIMEDIFF() du skal ha' fat i.
Avatar billede silwing Nybegynder
25. juli 2010 - 16:41 #5
Ah ja, endnu lettere løsning showsource er inde på.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester