Avatar billede meek Nybegynder
27. februar 2004 - 18:23 Der er 4 kommentarer og
2 løsninger

mandag udfra ugenummer

hej eksperter;

Skal bruge en funktion som modtager et ugenummer og returnerer et dato-objekt på mandagen i den pågældende uge...

Hvem er hurtig??
Avatar billede muddi Praktikant
27. februar 2004 - 19:27 #1
Har du kigget på denne her side, hvor der i noterne står en masse om ugenumre og hvordan man kan arbejde med disse.
http://dk2.php.net/strftime

Jeg kan ikke helt se om det her kan bruges, men du kan prøve at kigge på det.
http://forums.hotscripts.com/showthread.php?p=18902#post18902

Jeg ved ikke helt om jeg har forstået dit spørgsmål korrekt, men vil du have et objekt? Og skal det kun returneres mandag i pågældende uge?

Kan du ikke give en lidt bedre beskrivelse af problemet? Så kommer der helt sikkert flere svar herinde :o)
Avatar billede meek Nybegynder
27. februar 2004 - 23:16 #2
objekt og obejkt.. jeg vil bare have mandagen, og kun mandagen i den pågælende uge. jeg skal bruge det på formen "Ymd", men det kan ejg jo selv formatere mig ud af hvis jeg får et date-objekt!
Avatar billede Slettet bruger
27. februar 2004 - 23:16 #3
Kan den her bruges?

function ugestart($ugenummer,$aarstal=''){
// Kaldes med ugenummer og eventuelt årstal
// Hvis årstal udelades bruges det aktuelle år

  if(empty($aarstal)){$aarstal=date('Y');}

  // Find en dato, som er i den pågældende uge.
  $dag_i_aar=($ugenummer-1)*7+4;

  $temp=getdate(mktime(0,0,0,1,$dag_i_aar,$aarstal));

  // Søndag er dag nummer 7 i en uge, ikke nummer 0
  if ($temp['wday']==0) {$temp['wday']=7;}

  return mktime(0,0,0,$temp['mon'],1+$temp['mday']-$temp['wday'],$aarstal);
}
Avatar billede meek Nybegynder
28. februar 2004 - 10:58 #4
> sandbox. Din virker ik generelt, nogle år kommer uge 52 (eller 53) ind over årsskiftet, og andre gange starter uge 1 midt i et år (se bare 2003-2004 - 2004-2005) der har du et eksempel.

Jeg har selv kodet en funktion der virker. Jeg finder først den første mandag i året, derefter finder jeg den uge som mandagen er i og trækker det for den pågældende uge. Derved får jeg hvad jeg skal gange med faktor 7, og vupti! en mandag..:

function findMondayFromWeekNumber($weekNo, $year="") {
   
  if (empty($year)) $year = date("Y");
       
  // Find årets første mandag
  for ($i=0;$i<7; $i++) {
   
    $aDay = date("w", mktime(0, 0, 0, 1  , 1+$i, $year));
    if ($aDay == 1) {
           
      $aDayWeekNo = date("W", mktime(0, 0, 0, 1  , 1+$i, $year));
      $monday = date("Ymd", mktime(0, 0, 0, 1  , (1+$i)+(7*($weekNo-$aDayWeekNo)), $year));
      return $monday;
    }
}
Avatar billede meek Nybegynder
28. februar 2004 - 10:58 #5
tak for inspirationen... vi deler :-)
Avatar billede Slettet bruger
28. februar 2004 - 12:00 #6
Jeg synes ellers jeg havde testet med "underlige" år, men du har vist ret. Godt du fangede den.
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