06. juni 2003 - 15:47Der 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?
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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
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 )
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..
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 :
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..)
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 ,-)
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
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??
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) ??
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..
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??
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.
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 :)
-- 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 !-)
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..
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.