Discussion:
Kalenderwoche in Timestamp umrechnen
(zu alt für eine Antwort)
Pascal Rehfeldt
2004-01-01 21:54:43 UTC
Permalink
Hallo,

ich habe eine Kalenderwoche und das Jahr in der sich diese KW befindet
(z.B. 1 2004) wie bekomme ich den Anfang und das Ende der KW als
Timestamp heraus?

Pascal
Andre Rauh
2004-01-01 23:15:58 UTC
Permalink
Post by Pascal Rehfeldt
Hallo,
Abend,
Post by Pascal Rehfeldt
ich habe eine Kalenderwoche und das Jahr in der sich diese KW befindet
(z.B. 1 2004) wie bekomme ich den Anfang und das Ende der KW als
Timestamp heraus?
echo date('r', strtotime('x'));

Wobei x z.B:

2 Week 2004 this Sunday
2 Week 2004 last Monday

Wenn du Sonntag als Ende und Montag als Anfang der Woche definierst.

HTH Andre
Björn Schotte
2004-01-02 07:39:55 UTC
Permalink
Hi Pascal,
Post by Pascal Rehfeldt
ich habe eine Kalenderwoche und das Jahr in der sich diese KW befindet
(z.B. 1 2004)
Ich hatte das Problem auch gerade lösen müssen. Du rechnest
mit date('W') aus, welcher Tag der 1.1. deines $jahr (=2004)
ist. Ist er kleiner-gleich Donnerstag, rechnest du auf den
Montag zurück (d.h. vom Timestamp des 1.1. 3*86400 abziehen
bzw. mit mktime einfach 1-($wochentag-1) Tage abziehen), ansonsten auf
den Montag vor, mit mktime 1+(7-$wochentag+1).

Dann weißt du den Montag der ersten Kalenderwoche und kannst
auf diesen Timestamp nochmal ($kw-1)*7 Tage drauf rechnen, um
auf den Montag der gewünschten $kw in $jahr zu kommen.

Bei mir sah das Rumgehacke dann so aus:

function firstkw($jahr) {
$erster = mktime(0,0,0,1,1,$jahr);
$wtag = date('w',$erster);
#print "wtag = $wtag<hr>";

if ($wtag <= 4) {
/**
* Donnerstag oder kleiner: auf den Montag zurückrechnen.
*/
$montag = mktime(0,0,0,1,1-($wtag-1),$jahr);
} else {
/**
* auf den Montag nach vorne rechnen.
*/
$montag = mktime(0,0,0,1,1+(7-$wtag+1),$jahr);
}
return $montag;
}

function mondaykw($kw,$jahr) {
$firstmonday = firstkw($jahr);
$mon_monat = date('m',$firstmonday);
$mon_jahr = date('Y',$firstmonday);
$mon_tage = date('d',$firstmonday);

$tage = ($kw-1)*7;

$mondaykw = mktime(0,0,0,$mon_monat,$mon_tage+$tage,$mon_jahr);
return $mondaykw;
}

function weekofkw($kw,$jahr) {
$mon = mondaykw($kw,$jahr);
$monat = date('m',$mon);
$jahr = date('Y',$mon);
$tag = date('d',$mon);

return array(
$mon,
mktime(0,0,0,$monat,$tag+1,$jahr),
mktime(0,0,0,$monat,$tag+2,$jahr),
mktime(0,0,0,$monat,$tag+3,$jahr),
mktime(0,0,0,$monat,$tag+4,$jahr),
mktime(0,0,0,$monat,$tag+5,$jahr)
);
}
Pascal Rehfeldt
2004-01-02 16:51:00 UTC
Permalink
Vielein dank euch beiden.
Ich werde mich mal mit beiden Möglichkeiten beschäftigen.


Pascal
Pierre Schmidt
2004-01-06 19:57:28 UTC
Permalink
Post by Pascal Rehfeldt
Hallo,
ich habe eine Kalenderwoche und das Jahr in der sich diese KW befindet
(z.B. 1 2004) wie bekomme ich den Anfang und das Ende der KW als
Timestamp heraus?
Pascal
hi
ist deine frage noch aktuell?

Loading...