Zum Inhalt springen

kalenderwoche auf datum rückschließen


Empfohlene Beiträge

hi leute...

ich habe ein php script das die kalenderwoche anzeigt und daraufhin noch den inhalt aus einer datenbank der zu dieser kalenderwoche gehört...

nun wollte ich in den kopf der tabelle (also wo auch die Kw drinne steht)

unter die kw schreiben das z.b die 41 kw dem 7.okt - 11 okt entspricht..

wie schon im beispiel zu sehen sollte der befehl auf arbeitstage beschränkt sein...

also WE haben keine bedeutung..

---------

weiterhin möchte ich das in meiner vorhanden datenbank die feiertage die so durchs jahr kommen eingetragen werden und dem user somit den zugriff auf dieser felder verweigern...

sprich:

ich habe nen stinknormalen kalernder und ich möchte das sich die feiertage darin berechnen lassen und nicht vorher von hand eingegeben werden müssen

Link zu diesem Kommentar
Auf anderen Seiten teilen

//Errechnet das Datum des letzten Arbeitstages (Freitag) einer übergebenen Kalenderwoche und des  Jahres
function KWtoDate($eingabe, $jahr)
{
$tag_jahresbeginn = mktime(0, 0, 0, 1, 1, $jahr);
switch(date("l", $tag_jahresbeginn))
{
case "Monday" : $einige_tage = 4; break;
case "Tuesday" : $einige_tage = 3; break;
case "Wednesday" : $einige_tage = 2; break;
case "Thursday" : $einige_tage = 1; break;
case "Friday" : $einige_tage = 0; break;
case "Saturday" : $einige_tage = 5; break;
case "Sunday" : $einige_tage = 6; break;
default : print "Dieser Satz darf nie erscheinen, sonst ist ******** passiert !"; break;
}

$tage_bis_ziel_kw = ($eingabe - 1) * 7 + $einige_tage;
$datum_in_ziel_kw = mktime(0, 0, 0, 1 , 1 + $tage_bis_ziel_kw, date("Y"));

//print "KW $eingabe in diesem Jahr endet am : ". date ("l d F", $datum_in_ziel_kw);
$ziel_tag = date("d", $datum_in_ziel_kw);
$ziel_monat = date("m", $datum_in_ziel_kw);
$ziel_jahr = date("Y", $datum_in_ziel_kw);
$Zieldatum = "$ziel_tag.$ziel_monat.$ziel_jahr";

return $Zieldatum;
}

[/PHP]

Ist nicht ganz professionell, denke aber daraus kann man das ganz leicht machen was Du benötigst. Da diese Funktion immer den Freitag ausrechnet müsste man nur die par Tage zurück miteinbeziehen.

Hoffe es hilft.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von kills

$eingabe = die aktuelle kw?!?!

$jahr das aktuelle jahr oder?!?!

Ja

was macht die zeile

"return $zieldatum" ?!?!

was macht die zeile

return $zieldatum

bzw was macht der befehl return!?!

Dieser Befehl gibt das errechnete Datum der Funktion (den Freitag) zurück, d.h. wenn die sie z.B. so aufrufst "$test = KWtoDate(22, 2002);" steht in $test das entsprechende Datum.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

also zum Problem mit der Kalenderwoche:

PHP zählt die Wochen vom ersten Sonntag des Jahres an, also wenn dann der 1.1. z.B. ein Donnerstag ist, so ist der erste Sonntag der 4.1. und erst ab dem 4.1. die Woche wird gezählt!

Du mußt einfach die Funktion ausführen, die Dir die Kalenderwoche zurückgibt und dann prüfen ob der 1.1. ein Sonntag ist, wenn nicht mußt Du einfach Deine KW um eins erhöhen!

Bis denn...:marine

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 4 Wochen später...

kann ich die funktion jetzt mit der richtigen kw ansteuern?!

d.h also mit 54 usw.

oder muss ich der funktion die 53kw uebergeben damit sie mir die 54kw ausspuckt!?

---------

wie kann ich abprüfen ob der 1.1 ein sonntag ist?!

kann mir jemand den quelltext posten. ich blick durch die funktion kwtodate nicht so ganz durch.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by AlexBossi

Du mußt einfach die Funktion ausführen, die Dir die Kalenderwoche zurückgibt und dann prüfen ob der 1.1. ein Sonntag ist, wenn nicht mußt Du einfach Deine KW um eins erhöhen!

Bis denn...:marine

function gibdatum($kw, $jahr, $wo) {//Errechnet das Datum des letzten Arbeitstages (Freitag) einer übergebenen Kalenderwoche und des Jahres

/*

$wo=0 == Freitag

$wo=1 == Donnerstag

$wo=2 == Mittwoch

$wo=3 == Dienstag

$wo=4 == Montag

...

*/

$marke = 0;

$tag_jahresbeginn = mktime(0, 0, 0, 1, 1, $jahr);

switch(date("l", $tag_jahresbeginn))

{

case "Monday" : $einige_tage = 4;$kw++; break; // <----

case "Tuesday" : $einige_tage = 3;$kw++; break; // <----

case "Wednesday" : $einige_tage = 2;$kw++; break; // <----

case "Thursday" : $einige_tage = 1;$kw++; break; // <----

case "Friday" : $einige_tage = 0;$kw++; break; // <----

case "Saturday" : $einige_tage = 5;$kw++; break; // <----

case "Sunday" : $einige_tage = 6; break;

default : print "Fehler in Function GibDatum oder falsche® Übergabeparameter!"; break;

}

$tage_bis_ziel_kw = ($kw - 1) * 7 + $einige_tage;

$tagesdatum_wo = mktime(0, 0, 0, 1 , 1 + $tage_bis_ziel_kw-$wo, $jahr);

$tag = date("d", $tagesdatum_wo);

$monat = date("m", $tagesdatum_wo);

$jahr = date("Y", $tagesdatum_wo);

$dat = "$monat/$tag/$jahr";

return $dat;

}

hier mein quellcode.

die funktion hat halt jetzt nen anderen namen aber is ja egal.

habe ich das só richtig verstanden?!

sry wegen dem doppelten post

Link zu diesem Kommentar
Auf anderen Seiten teilen

PHP:--------------------------------------------------------------------------------

//Errechnet das Datum des letzten Arbeitstages (Freitag) einer übergebenen Kalenderwoche und des Jahres

function KWtoDate($eingabe, $jahr)

{

$tag_jahresbeginn = mktime(0, 0, 0, 1, 1, $jahr);

switch(date("l", $tag_jahresbeginn))

{

case "Monday" : $einige_tage = 4; break;

case "Tuesday" : $einige_tage = 3; break;

case "Wednesday" : $einige_tage = 2; break;

case "Thursday" : $einige_tage = 1; break;

case "Friday" : $einige_tage = 0; break;

case "Saturday" : $einige_tage = 6; break; // <--- Hier war der fehler !! "5" & "6" war vertauscht

case "Sunday" : $einige_tage = 5; break;

default : print "Dieser Satz darf nie erscheinen, sonst ist ******** passiert !"; break;

}

$tage_bis_ziel_kw = ($eingabe - 1) * 7 + $einige_tage;

$datum_in_ziel_kw = mktime(0, 0, 0, 1 , 1 + $tage_bis_ziel_kw, date("Y"));

//print "KW $eingabe in diesem Jahr endet am : ". date ("l d F", $datum_in_ziel_kw);

$ziel_tag = date("d", $datum_in_ziel_kw);

$ziel_monat = date("m", $datum_in_ziel_kw);

$ziel_jahr = date("Y", $datum_in_ziel_kw);

$Zieldatum = "$ziel_tag.$ziel_monat.$ziel_jahr";

return $Zieldatum;

}

----------------------------------

hier nun die korrekte funktion funzt 100% richtig ;))

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...