Avatar billede martinsp Nybegynder
06. maj 2008 - 17:38 Der er 6 kommentarer og
1 løsning

Hvordan tæller jeg dagene fra en oprettelsesdato?

Hej eksperter

Jeg har brug for en kode, der tæller dagene fra en oprettelsesdato i databasen. Fx hvis datoen er "15-01-2008", at den så finder ud af, hvor mange dage siden, den er oprettet, iforhold til den dag men har idag.

Nogen der kan hjælpe mig`? (:
Avatar billede w13 Novice
06. maj 2008 - 18:03 #1
Der er vist ikke nogen standard datoforskel-funktion. Se evt.: http://www.ilovejackdaniels.com/php/php-datediff-function/

eller søg på Google efter "php datediff".
Avatar billede coderdk Praktikant
06. maj 2008 - 18:57 #2
Hvis du bruger MySQL (over v4.1.1), så brug et DATETIME felt og brug mysqls egen DATEDIFF() funktion...
Avatar billede martinsp Nybegynder
06. maj 2008 - 20:02 #3
Hmm, har prøvet nogle eksempeler og læst og læst, men af en eller anden grund, så virker det ikke. Det er som om den slet ikke kender funktionen`?
Avatar billede w13 Novice
06. maj 2008 - 20:27 #4
Har du også kopieret selve funktionen ind? ;)

<?phpfunction datediff($interval, $datefrom, $dateto, $using_timestamps = false) {  /*    $interval can be:    yyyy - Number of full years    q - Number of full quarters    m - Number of full months    y - Difference between day numbers      (eg 1st Jan 2004 is "1", the first day. 2nd Feb 2003 is "33". The datediff is "-32".)    d - Number of full days    w - Number of full weekdays    ww - Number of full weeks    h - Number of full hours    n - Number of full minutes    s - Number of full seconds (default)  */    if (!$using_timestamps) {    $datefrom = strtotime($datefrom, 0);    $dateto = strtotime($dateto, 0);  }  $difference = $dateto - $datefrom; // Difference in seconds    switch($interval) {      case 'yyyy': // Number of full years      $years_difference = floor($difference / 31536000);      if (mktime(date("H", $datefrom), date("i", $datefrom), date("s", $datefrom), date("n", $datefrom), date("j", $datefrom), date("Y", $datefrom)+$years_difference) > $dateto) {        $years_difference--;      }      if (mktime(date("H", $dateto), date("i", $dateto), date("s", $dateto), date("n", $dateto), date("j", $dateto), date("Y", $dateto)-($years_difference+1)) > $datefrom) {        $years_difference++;      }      $datediff = $years_difference;      break;    case "q": // Number of full quarters      $quarters_difference = floor($difference / 8035200);      while (mktime(date("H", $datefrom), date("i", $datefrom), date("s", $datefrom), date("n", $datefrom)+($quarters_difference*3), date("j", $dateto), date("Y", $datefrom)) < $dateto) {        $months_difference++;      }      $quarters_difference--;      $datediff = $quarters_difference;      break;    case "m": // Number of full months      $months_difference = floor($difference / 2678400);      while (mktime(date("H", $datefrom), date("i", $datefrom), date("s", $datefrom), date("n", $datefrom)+($months_difference), date("j", $dateto), date("Y", $datefrom)) < $dateto) {        $months_difference++;      }      $months_difference--;      $datediff = $months_difference;      break;    case 'y': // Difference between day numbers      $datediff = date("z", $dateto) - date("z", $datefrom);      break;    case "d": // Number of full days      $datediff = floor($difference / 86400);      break;    case "w": // Number of full weekdays      $days_difference = floor($difference / 86400);      $weeks_difference = floor($days_difference / 7); // Complete weeks      $first_day = date("w", $datefrom);      $days_remainder = floor($days_difference % 7);      $odd_days = $first_day + $days_remainder; // Do we have a Saturday or Sunday in the remainder?      if ($odd_days > 7) { // Sunday        $days_remainder--;      }      if ($odd_days > 6) { // Saturday        $days_remainder--;      }      $datediff = ($weeks_difference * 5) + $days_remainder;      break;    case "ww": // Number of full weeks      $datediff = floor($difference / 604800);      break;    case "h": // Number of full hours      $datediff = floor($difference / 3600);      break;    case "n": // Number of full minutes      $datediff = floor($difference / 60);      break;    default: // Number of full seconds (default)      $datediff = $difference;      break;  }      return $datediff;}?>
Avatar billede w13 Novice
06. maj 2008 - 20:27 #5
Hmm.. Knap så overskueligt her.
Avatar billede martinsp Nybegynder
06. maj 2008 - 20:38 #6
hmm, tror det er fordi min version er for gammel /:
Avatar billede martinsp Nybegynder
18. oktober 2010 - 18:07 #7
lukker...
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