Avatar billede leif Seniormester
09. december 2006 - 12:28 Der er 14 kommentarer og
2 løsninger

Uge 50 er lig med d. 11/12 til 17/12

Hej,

Hvordan kan man nemmest beregne at uge 50 er Mandag d. 11/12 til Søndag 17/12 ?

På forhånd tak.


/Leif
Avatar billede showsource Seniormester
09. december 2006 - 13:01 #1
Et forslag:

$week = 50;
$start = mktime(0,0,0, 01, 01, 2006); // årstal må du jo ha' et sted fra?
$max_week_sec = (($week*604800)+$start);
$min_week_sec = ($max_week_sec-518400);

echo date("d-m-Y H:i:s", $min_week_sec) ." - ". date("d-m-Y H:i:s", $max_week_sec);
Avatar billede intenz Novice
09. december 2006 - 17:06 #2
Det vil ikke helt virke, da uge 1 ikke nødvendigvis starter d. 1 januar
Avatar billede showsource Seniormester
09. december 2006 - 17:08 #3
Det har du så ret i, men så tjekker man jo hvis ugen er 52 eller 53
Altså den tid som kommer frem, der tjekkes om år stadig er det samme.
Avatar billede arne_v Ekspert
09. december 2006 - 17:21 #4
høker løsning:

<?php
    $w = 50;
    $y = 2006;
    for($m = 1; $m <= 12; $m++) {
        for($d = 1; $d <= cal_days_in_month(CAL_GREGORIAN, $m, $y); $d++) {
            $t = mktime(0, 0, 0, $m, $d, $y);
            if(date("Y", $t) == $y && date("W", $t) == $w) {
                $ft = date("d/m/Y", $t);
                echo "$ft<br>";
            }
        }
    }
?>
Avatar billede leif Seniormester
09. december 2006 - 18:21 #5
Det er jo sikkert godt, men Uge 1 af 2007 får jeg både 01/01, 02/01, 03/01, 04/01, 05/01, 06/01, 07/01 og 31/12-07

Ikke særlig fedt samt jeg faktisk kun skal bruge Mandag og Søndag, glemte jeg at skrive
Avatar billede arne_v Ekspert
09. december 2006 - 18:28 #6
<?php
    $w = 1;
    $y = 2007;
    for($m = 1; $m <= 12; $m++) {
        for($d = 1; $d <= cal_days_in_month(CAL_GREGORIAN, $m, $y); $d++) {
            $t = mktime(0, 0, 0, $m, $d, $y);
            if(date("W", $t) >= $m && date("W", $t) < $m*6 &&date("W", $t) == $w) {
                $ft = date("l d/m/Y", $t);
                echo "$ft<br>";
            }
        }
    }
?>
Avatar billede showsource Seniormester
09. december 2006 - 19:00 #7
Borset fra det, er det vel mere relevant at finde ugedage ud fra en dato, og ikke ugenr.

Sidste post fra arne_v, der vil uge 1 2016 f.eks. starte med mandag d. 4.
Og uge 53 slutte torsdag  i 2015
Avatar billede leif Seniormester
09. december 2006 - 19:18 #8
I den her situation er det relevante Ugen

Da der skal så fx: Åbningstiderne er i uge 50 (11/12 - 17/12)
Avatar billede intenz Novice
10. december 2006 - 11:40 #9
Ellers kan du jo gøre sådan her. Den først mandag i uge 1, og ganger antallet af uger på det.

<?
$uge = "42"; // f.eks. uge 42

$time = time();

$start_date = mktime(0, 0, 0, 1, 1, date("Y", $time));
$start_week = date("W", $forste_dag_i_aar);

while($start_week != 1) {
$start_date = $start_date+86400;
$start_week = date("W", $forste_dag_i_aar);
}

$forste_mandag_i_uge_et = $uge_den_forste_i_aar;

$dato_start = $start_date+($uge*7*86400);
$dato_slut = $start_date+(6*86400);
$dato_start = date("d/m,Y", $dato_start);
$dato_slut = date("d/m,Y", $dato_slut);

print "$dato_start - $dato_slut";
?>
Avatar billede intenz Novice
10. december 2006 - 11:41 #10
Prøver lige igen:

<?
$uge = "42"; // f.eks. uge 42

$time = time();

$start_date = mktime(0, 0, 0, 1, 1, date("Y", $time));
$start_week = date("W", $forste_dag_i_aar);

while($start_week != 1) {
$start_date = $start_date+86400;
$start_week = date("W", $forste_dag_i_aar);
}

$dato_start = $start_date+($uge*7*86400);
$dato_slut = $start_date+(6*86400);
$dato_start = date("d/m,Y", $dato_start);
$dato_slut = date("d/m,Y", $dato_slut);

print "$dato_start - $dato_slut";
?>
Avatar billede leif Seniormester
12. december 2006 - 22:26 #11
intenz -> Den skriver hele tiden: som 07/01-2006 slut !
Avatar billede leif Seniormester
23. december 2006 - 13:18 #12
showsource -> Smid et svar
Avatar billede showsource Seniormester
23. december 2006 - 16:21 #13
ehh, kan jeg da godt, men din endelige løsning vil jeg, ( vi ), da gerne se!
Avatar billede showsource Seniormester
23. december 2006 - 16:21 #14
hov
Avatar billede leif Seniormester
23. december 2006 - 16:44 #15
Lige nu er det faktisk bare den som bruges, da jeg ikke kan gå intenz til at skrive de rigtige datoer !
Avatar billede intenz Novice
02. januar 2007 - 22:09 #16
Faldt lige over den her tråd igen, og fik fyret op under min localhost. Så nu virker den:

<?
$uge = "42"; // f.eks. uge 42

$time = time();

$start_date = mktime(0, 0, 0, 1, 1, date("Y", $time));
$start_week = date("W", $start_date);

while($start_week != 1) {
$start_date = $start_date+86400;
$start_week = date("W", $start_date);
}

$dato_start = $start_date+(($uge-1)*7*86400);
$dato_slut = $dato_start+(6*86400);
$dato_start = date("d/m-Y", $dato_start);
$dato_slut = date("d/m-Y", $dato_slut);

print "$dato_start - $dato_slut";
?>
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