Avatar billede skwizie Nybegynder
17. oktober 2006 - 10:08 Der er 1 kommentar og
1 løsning

Antal dage uden weekend

Jeg skal bruge et script der angiver hvor mange dage der er fra dags dato til en given dato, uden den tæller lørdag søndag med?
Avatar billede radion Nybegynder
17. oktober 2006 - 21:24 #1
her er en funktion der kan gøre det:

<?php
echo businessdays("14 october 2006","24 october 2006");

function businessdays($begin, $end) {
  $rbegin = is_string($begin) ? strtotime(strval($begin)) : $begin;
  $rend = is_string($end) ? strtotime(strval($end)) : $end;
  if ($rbegin < 0 || $rend < 0)
      return 0;

  $begin = workday($rbegin, TRUE);
  $end = workday($rend, FALSE);

  if ($end < $begin) {
      $end = $begin;
      $begin = $end;
  }

  $difftime = $end - $begin;
  $diffdays = floor($difftime / (24 * 60 * 60)) + 1;

  if ($diffdays < 7) {
      $abegin = getdate($rbegin);
      $aend = getdate($rend);
      if ($diffdays == 1 && ($astart['wday'] == 0 || $astart['wday'] == 6) && ($aend['wday'] == 0 || $aend['wday'] == 6))
          return 0;
      $abegin = getdate($begin);
      $aend = getdate($end);
      $weekends = ($aend['wday'] < $abegin['wday']) ? 1 : 0;
  } else
      $weekends = floor($diffdays / 7);
  return $diffdays - ($weekends * 2);
}

function workday($date, $begindate = TRUE) {
  $adate = getdate($date);
  $day = 24 * 60 * 60;
  if ($adate['wday'] == 0) // Sunday
      $date += $begindate ? $day : -($day * 2);
  elseif ($adate['wday'] == 6) // Saterday
      $date += $begindate ? $day * 2 : -$day;
  return $date;
}
?>
Avatar billede radion Nybegynder
17. oktober 2006 - 21:28 #2
og hvis det er fra nu og til en given dato kalder du den med

echo businessdays(date("j F Y",time()),"24 october 2006");

så finder den antal arbejdsdage mellem i dag og 24 oktober
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