php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 28-12-2008, 14:18
reddevil82
 Newbie
Links : Onlinestatus : reddevil82 ist offline
Registriert seit: Sep 2007
Beiträge: 21
reddevil82 ist zur Zeit noch ein unbeschriebenes Blatt
Standard KW Datum werden nicht richtig errechnet

Hallo Ihr

hoffe bin hier im richtigen Forum

Habe ein Problem mit meinem Sendeplan.

Und zwar wird da bei den Datum folgendes ausgegeben:

Sendeplan vom 28.12.2008 - 4.13.2008

Ich weiss leider nicht warum der da nicht automatisch auf den 1.1.09 springt bzw. was ich falsch am code habe.

hier mal der code


PHP-Code:
function get_monday($kw,$year false) {    
if (
$year == false$year date("Y");    
if (
$kw || $kw 53) return false;    
$dayofweek = (intval(date("w",mktime(0,0,0,1,1,$year))) == 0) ? intval(date("w",mktime(0,0,0,1,1,$year)));    
$dayofyear 7*($kw-2)+(9-$dayofweek);    $days      0;    $i           1;     
while (
true) {        
if (
$days+date('t',mktime(0,0,0,$i,1,$year)) < $dayofyear$days += date('t',mktime(0,0,0,$i++,1,$year));        
else return 
$datum = (($dayofyear-$days 1) ? : ($dayofyear-$days)).".".($i).".$year";    } } 
$kw = (int)date('W'); $j  $jahr;

function 
get_sunday($kw,$year false) {    
if (
$year == false$year date("Y");    
if (
$kw || $kw 53) return false;    
$dayofweek = (intval(date("w",mktime(0,0,0,1,1,$year))) == 0) ? intval(date("w",mktime(0,0,0,1,1,$year)));    
$dayofyear 7*($kw-2)+(15-$dayofweek);    $days      0;    $i           1;     
while (
true) {        
if (
$days+date('t',mktime(0,0,0,$i,1,$year)) < $dayofyear$days += date('t',mktime(0,0,0,$i++,1,$year));        
else return 
$datum = (($dayofyear-$days 1) ? : ($dayofyear-$days)).".".($i).".$year";    } } 
$kw = (int)date('W'); $j  $jahr;



$site_body .= '
<table class="contentbody" colspan="2" width="100%" cellspacing="0" cellpadding="4">
        <tr>
            <td  class="heads"><p><b>Sendeplan für die '
.$kw_aktuell.'. KW Woche vom '.get_monday($kw,$j).' bis '.get_sunday($kw,$j).'</b></p>            </td>
              
        </tr>
                
</table><br>'

Danke für eure Hilfe im voraus
Mit Zitat antworten
  #2 (permalink)  
Alt 28-12-2008, 18:57
Edlly
 Registrierter Benutzer
Links : Onlinestatus : Edlly ist offline
Registriert seit: Apr 2004
Beiträge: 59
Edlly ist zur Zeit noch ein unbeschriebenes Blatt
Standard

also ich weiß das bei mir date diese jahr (2008) statt 53, 01 bei der KW ausgibt. Scheint ein fehler zu sein, genau weiß ich aber nicht wieso das so ist. Denn alle anderen Jahre, davor und danach ist das nicht so.

Vieleicht hilft es dir aber, den durch deinen Code blick ich nicht so recht durch.
Mit Zitat antworten
  #3 (permalink)  
Alt 29-12-2008, 07:55
MelloPie
 PHP Master
Links : Onlinestatus : MelloPie ist offline
Registriert seit: Jan 2002
Ort: Hessen
Beiträge: 4.380
MelloPie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

warum verwendest Du nicht einfach die Funktion strtotime()?
zB:
Code:
//Montag:
echo date('w')==1 ? date('d-m-Y'):date('d-m-Y',strtotime("Last Monday")); 
// Sonntag:
echo date('d-m-Y',strtotime("Sunday"));
__________________
Beantworte nie Threads mit mehr als 15 followups...
Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25
Mit Zitat antworten
  #4 (permalink)  
Alt 29-12-2008, 08:09
MelloPie
 PHP Master
Links : Onlinestatus : MelloPie ist offline
Registriert seit: Jan 2002
Ort: Hessen
Beiträge: 4.380
MelloPie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Edlly
also ich weiß das bei mir date diese jahr (2008) statt 53, 01 bei der KW ausgibt. Scheint ein fehler zu sein, genau weiß ich aber nicht wieso das so ist. Denn alle anderen Jahre, davor und danach ist das nicht so.

Schon mal in einen Kalender geschaut? Es gibt 2008 nur 52 Wochen.
__________________
Beantworte nie Threads mit mehr als 15 followups...
Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25
Mit Zitat antworten
  #5 (permalink)  
Alt 29-12-2008, 11:52
Edlly
 Registrierter Benutzer
Links : Onlinestatus : Edlly ist offline
Registriert seit: Apr 2004
Beiträge: 59
Edlly ist zur Zeit noch ein unbeschriebenes Blatt
Standard

also alle meine kalender haben 53... entwerder habe ich nur fehldrucke oder du irrst dich..
Mit Zitat antworten
  #6 (permalink)  
Alt 29-12-2008, 12:09
lennart
 PHP Junior
Links : Onlinestatus : lennart ist offline
Registriert seit: May 2007
Ort: Hamburg
Beiträge: 565
lennart ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Wir befinden uns jetzt schon in KW 01/09
Mit Zitat antworten
  #7 (permalink)  
Alt 29-12-2008, 12:14
MelloPie
 PHP Master
Links : Onlinestatus : MelloPie ist offline
Registriert seit: Jan 2002
Ort: Hessen
Beiträge: 4.380
MelloPie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Edlly
also alle meine kalender haben 53... entwerder habe ich nur fehldrucke oder du irrst dich..
Fehldrucke
__________________
Beantworte nie Threads mit mehr als 15 followups...
Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25
Mit Zitat antworten
  #8 (permalink)  
Alt 29-12-2008, 14:06
Edlly
 Registrierter Benutzer
Links : Onlinestatus : Edlly ist offline
Registriert seit: Apr 2004
Beiträge: 59
Edlly ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von lennart
Wir befinden uns jetzt schon in KW 01/09
Das könnte es natürlich erklären!

Wobei ich leider auch keine regel finde nach der das festgelegt ist, scheint irgenwie auslegungs sache zu sein ob das 01. oder 53. ist? Ist eigentlich auch egal.
Mit Zitat antworten
  #9 (permalink)  
Alt 29-12-2008, 14:19
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

date('w') richtet sich nach ISO 8601, welches als erste Woche im Jahr die Woche mit dem ersten Januar-Donnerstag definiert. Die anderen Zeitfunktionen in PHP richten sich diesbezüglich hoffentlich auch nach diesem Standard, wobei mir gerade gar keine Funktion einfällt, mit der man sonst noch die Wochennummer bestimmen kann.
Mit Zitat antworten
  #10 (permalink)  
Alt 29-12-2008, 14:47
MelloPie
 PHP Master
Links : Onlinestatus : MelloPie ist offline
Registriert seit: Jan 2002
Ort: Hessen
Beiträge: 4.380
MelloPie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Die Regel ist einfach, es gibt sogar eine DIN nrm dazu:
die erste Woche des Jahres ist Woche, in die mindestens vier Tage des neuen Jahres fallen (DIN 1355 / ISO 8601)
__________________
Beantworte nie Threads mit mehr als 15 followups...
Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25
Mit Zitat antworten
  #11 (permalink)  
Alt 30-12-2008, 11:24
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Die Kalenderwochenzählung nach ISO-8601 wird in der Wikipedia erschöpfend erklärt, ist aber nicht die einzige Zählweise:

http://de.wikipedia.org/wiki/Woche#B...n_L.C3.A4ndern

http://de.wikipedia.org/wiki/Woche#W...nungsvarianten
Mit Zitat antworten
  #12 (permalink)  
Alt 30-12-2008, 14:25
Koala
 PHP Junior
Links : Onlinestatus : Koala ist offline
Registriert seit: Jan 2006
Beiträge: 887
Koala ist zur Zeit noch ein unbeschriebenes Blatt
Standard

http://www.nwn.de/hgm/kalender/kal-64.htm:

Zitat:
Prinzipiell könnte man die zugehörige Kalenderwoche zu
einem Datum berechnen, indem man ermittelt um welchen Tag des
Jahres es sich handelt und diesen dann durch sieben teilt. Eine
Kalenderwoche beginnt aber laut der DIN 1355 - Zeit immer
Montags, so dass hierzu zunächst bestimmt werden muss, wann
die erste Woche des Jahres beginnt.
PHP-Code:
 function Kalenderwoche(tag,monat,jahr) {
   var 
Woche      0;
   var 
Wchtag1Jan CurrentDoomDay(jahr);
   var 
Tage       Tag_des_Jahres(tag,monat,jahr)-1;

   if (
Wchtag1Jan 3)
      
Tage Tage - (Wchtag1Jan);
   else 
Tage Tage Wchtag1Jan;

   if (
Tage 0)
      if (   (
Wchtag1Jan == 4)
          || (
CurrentDoomDay(jahr-1) == 3))
         
Woche 53;
      else 
Woche 52;
   else 
Woche Math.floor(Tage/7) + 1;

   if ((
Tage 360) && (Woche 52)) {
      if (
Wchtag1Jan == 3)
          
Woche 53;
      else if (
CurrentDoomDay(jahr+1) == 4)
              
Woche 53;
           else 
Woche 1;
   }

   return 
Woche;
 } 
Zitat:
Dieser Algorithmus berechnet zunächst den Jahrestag des
Datums, und dann wird die Tagesanzahl so korrigiert, dass
beginnend vom ersten Montag des Jahres gerechnet wird. Dies
funktioniert gut für 51 Wochen des Jahres, Probleme bereiten die
ersten und die letzten Tage des Jahres. Sofern eine negative
Tageszahl ermittelt wurde, liegen die ersten Tage eines Jahres in
der letzten Woche des Vorjahres. Dabei muss berücksichtigt
werden, dass ein Jahr eine 53. Woche hat, wenn es mit einem
Donnerstag beginnt oder endet. Genauso muss für die letzten
Tages des Jahres bestimmt werden, ob sie in der letzten Woche
des aktuellen Jahres liegt, oder aber bereits in der ersten Woche
des Folgejahres.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script ansehen ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script

Mit unserer Lösungen können Sie nahezu jeden B2B / B2C Marktplatz betreiben den Sie sich vorstellen können. Ganz egal ob Sie einen Automarktplatz, Immobilenportal oder einfach einen Anzeigenmarkt betreiben möchten. Mit ebiz-trader können Sie Ihre Anforder

11.10.2018 Berni | Kategorie: PHP/ Anzeigenmarkt
PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:28 Uhr.