Avatar billede encorez Nybegynder
06. juni 2003 - 15:47 Der er 22 kommentarer og
1 løsning

Find de 7 datoer i en uge

Jeg skal lave en lille kalender. Øverst har jeg de 10 kommende uger. Dem kan man trykke på. Derefter kommer så en oversigt med den valgte uge 7 dage. I disse dage skal jeg så vise nogle ting men det finder jeg selv ud af.

Problemet er at jeg ikke ved hvordan jeg finder de 7 datoer i den valgte uge. Hvordan klarer jeg den?

Mvh. Simon
Avatar billede encorez Nybegynder
06. juni 2003 - 15:56 #1
en lille ændring. I stedet for at skulle finde de 7 datoer i en uge, så skal jeg kunne finde datoen for f.eks. dag nr 3 i uge 22 år 2003. Så jeg skal finde en dato ud fra dagnr, ugenr og år. Det er sikkert ikke svært med phps funktioner, men jeg ved ikke lige hvad jeg skal gøre
Avatar billede henan Nybegynder
06. juni 2003 - 18:31 #2
Er det datoen (fx 28-05-2003) du skal bruge? Eller er det dagens navn (fx onsdag)?

mvh
/henrik
Avatar billede encorez Nybegynder
06. juni 2003 - 18:54 #3
det er datoen jeg skal finde ud fra de oplysninger jeg har skrevet
Avatar billede nicklasb Nybegynder
08. juni 2003 - 00:38 #4
har egentligt svaret på det samme her : http://www.eksperten.dk/spm/361602

hvis det er fordi du gerne vil finde dag 3 pluser du det bare på $dayofweek
( og for jer andre; har postet denne kode: http://www.bornstein.dk/weektodate.php )
Avatar billede roenving Novice
08. juni 2003 - 00:43 #5
Jamen, hvad så, hvis den 1/1 ligger i uge 52 eller uge 53 året før ?-)
Avatar billede nicklasb Nybegynder
08. juni 2003 - 09:54 #6
ved altså ikke så meget om kalenderen og hvordan den er indrettet.. men hvis den første i første ikke ligger på en mandag, er det så ikke bare to forskellige uger (henholdsvis uden en mandag i den ene, og uden de resterende i den anden??
Lige nu vil det script jeg hurtig lige skrev, for at vise at det altså ikke er svært at lave noget, der bare virker nogen lunde, sige at uge 1 i år 2003 er 30-12-2002
men koden var også KUN en inspiretion.. Så kan han vel selv lige lave lidt validering på resultatet, og tilpasse det så det kommer til at passe..
Avatar billede nicklasb Nybegynder
08. juni 2003 - 09:58 #7
har lige lavet et bevis (med php som hjælp.. hehe.. bevis nok eller??), som viser at det burde være rigtigt det jeg allerede har lavet..
Prøv at lave en :

<?php
$date = mktime(0,0,0,1,1,2003);
echo date("W", $date);
unset($date);
echo '<br>';
$date = mktime(0,0,0,12,31,2002);
echo date("W", $date);
?>

Den viser at den første i førset år 2003 er uge 1.. (lige som det jeg har lavet.. (og det siger vel også sig selv, at man starter med uge 1??))
Neden under viser den så at den 31 i 12 året før også er uge 1. Altså mandag i uge et må være den 31 i 12 2002 eller før denne.
Hvis du ved fra andre steder, at det er som du skriver, vil jeg da meget gerne høre om det.. Så vi kan få rettet det.. (man bliver sku helt idiot, når man sådan prøver at få koden til at passe.. hehe.. ;) og der er kalenderen jo ikke lige et let sted.. hmm..)
Avatar billede roenving Novice
08. juni 2003 - 12:53 #8
Uge 1 i et år er den uge, hvor årets første torsdag falder ...

-- det kan også oversættes til at den 1/1 falder i uge 1, hvis det er mandag, tirsdag, onsdag eller torsdag -- ellers ligger den i et ugenummer året før -- udregningen af det ugenummer er så afhængig af 1/1 året før og skudår ...

-- iøvrigt findes der til VB specielle parametre som kan fortælle week-funktionen, at ugen starter mandag og at årets første uge er den første med 4 eller flere dage i -- fordi du kan få afvigelser på ugeberegninger på amerikansk/engelsk og på dansk/europæisk ...

-- hvordan php tackler den har jeg ikke den anelste fjernelse om -- i php er jeg blank ,-)
Avatar billede nicklasb Nybegynder
08. juni 2003 - 14:13 #9
hehe.. ok.. der er en der har forstand på det, kan jeg høre.. Jeg vil se om jeg kan rette det..
Men jeg skal først lige have det HELT på det rene.. Ligger uge 1 i den første uge med en mandag efter nytår?? Eller kører vi efter den de 4 dage??
for så er det vel heller ikke uge 23 i dag??

og så har Mayland da også lavet en kæmpe fejl eller?? I min kalender står der at Mandag den 30 i 12 2002 er Uge 1, og uge to falder på Mandag den 6 i Første 2003.. eller er det så fordi de regner med den med de 4 dage??

Nu er jeg først rigtig forvirret?? hehe.. du bliver sku lige nød til at hjælpe mig.. :D
Avatar billede roenving Novice
08. juni 2003 - 14:25 #10
Se det første jeg skrev 12:53:10 -- altså hvis nytårsdag (1/1) er mandag, tirsdag, onsdag eller torsdag er det uge 1 !-)

Problemet opstår fordi en uge på amerikansk/engelsk starter en søndag, på dansk er det en mandag ...

Jeg ved ikke om de også har en anden måde at sige, at det er den første uge ,-)
Avatar billede nicklasb Nybegynder
08. juni 2003 - 14:34 #11
men så skulle det jo ikke være så svært at rette.. Det er jo bare at skrive "hvis års-stampet passer på en dag der er større end torsdag skal der trækkes en fra det endelige resultat.." vil det ikke passe??
Avatar billede nicklasb Nybegynder
08. juni 2003 - 14:37 #12
så uge 1 i år 2004 vil være 29-12-2003 fordi den 1/1 ligger på en torsdag, og uge 1 i år 2005 vil være den 3/1 fordi den 1/1 ligger på en lørdag, lige som år 2010 hvor den 1/1 ligger på en fredag (altså uge et starter på den 4/1) ??
Avatar billede roenving Novice
08. juni 2003 - 15:07 #13
Ja, præcis ,-)
Avatar billede nicklasb Nybegynder
08. juni 2003 - 15:54 #14
ok.. :D Det kan let rettes ved at udskifte linien:

    $dateofweekandyear = date ('d-m-Y', $mondayofweek);  // Udskrifter datoen i formatet dd-mm-yyyy for forrige timestamp

til:

    if (date('w',$thisyear) > 4) {
        $dateofweekandyear = date ('d-m-Y', $mondayofweek + 604800);  // Udskrifter datoen (plus en uge) i formatet dd-mm-yyyy for forrige timestamp
    } else {
        $dateofweekandyear = date ('d-m-Y', $mondayofweek);          // Udskrifter datoen i formatet dd-mm-yyyy for forrige timestamp
    }

Har lige testet lidt videre på phps datefunktion.. Og den skriver faktisk samme sprig som det du beskrev, når man snakker 2005, 2010 osv..

Men for lige at sige det igen; Min kode er LANGT fra optimal som den står der. Det er udelukkende meningen at encorez skulle få en ide om hvor let det egentligt er, og så selv lave sin egen optimerede kode..

men tak for forklaringen roenving.. :D
Avatar billede roenving Novice
08. juni 2003 - 15:55 #15
Muy bueno ;O)
Avatar billede nicklasb Nybegynder
08. juni 2003 - 16:01 #16
har opdateret koden på siden nu.. Så burde den virke som den skulle.. og så kunne jeg da godt tænke mig lidt tilbagemelding fra encorez, nu vi har gjordt så meget ud af at lave en funktion der virker som den skal.
Har du fået nok inspiration til selv at lave en kode ud fra det jeg har uploaded nu??
Avatar billede encorez Nybegynder
08. juni 2003 - 16:52 #17
Hej igen
Undskyld jeg har ikke har været med i denne gode diskution, jeg har været væk det meste af weekenden.

Jeg er meget glad for roenvings forklaring af kalenderen for det var jeg ikke klar over. Og tusind tak til nicklab for dit forslag til løsning. Problemet var egentlig ikke så meget at bruge date og mktime (selv om jeg ikke er stærk i dem endnu), men lige så meget at se princippet/metoden til at knækken nøden.

Jeg har kodet det ud fra dit forslag og det ser ud til er virke perfect.
Jeg vil gerne have at I begge ligger et svar så deler I disse point.
Avatar billede roenving Novice
08. juni 2003 - 17:01 #18
-- næh, det må være nicklas' kode der skal have pointene '-)
Avatar billede encorez Nybegynder
08. juni 2003 - 17:07 #19
roenving -> det får han også. Jeg synes det er fair at I deler disse point, fordi du var så venlig at komme med denne gode forklaring på kalenderen. Fordi jeg ikke kunne vente på et svar i fredags, oprettede jeg et lign soørgsmål, der får nicklasb alle pointene. Jeg ved godt de 10 point er symbolske, men du har fortjent dem.
Men ellers får nicklasb dem selfølgelig :)

På gensyn, Simon
Avatar billede roenving Novice
08. juni 2003 - 17:14 #20
-- lad bare nicklas få alle pointene ;O)

-- jeg har faktisk også fulgt med i dit andet spm, men har undladt at blande mig, fordi:
1. jeg kan nada php,
2. jeg var for doven til at sætte mig ned og udvikle algoritmen, men det gad nicklasb !-)

alle points til dem der udfører arbejdet !!!
Avatar billede nicklasb Nybegynder
08. juni 2003 - 18:05 #21
ligger også lige et svar her.. :D
men selv om du ikke vil have dem roenving, er jeg nu også meget glad for en rigtig god forklaring.. vidste ikke det med fredag og derefter, men vil huske det nu..
Avatar billede nicklasb Nybegynder
08. juni 2003 - 18:06 #22
hov.. svar.. :D sorry spam..
Avatar billede roenving Novice
08. juni 2003 - 18:07 #23
Velbekomme '-)
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