php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2010

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 30.08.2010, 19:57  
Benutzer
 
Registriert seit: 19.01.2010
Beiträge: 34
PHP-Kenntnisse:
Fortgeschritten
monk befindet sich auf einem aufstrebenden Ast
Standard Datumsproblem?

Hallo PHP Gemeinde

Ich habe vor einiger Zeit einen Schichtplan mit PHP erstellt, der auch wunderschön funktioniert. Da ich nun Feiertage noch integrieren wollte, bin ich auf das Problem mit Sommer-/Winterzeit gestossen.

Der Plan wird immer für eine Woche angezeigt. Grob gesagt, läuft es so ab:

- Die Kalenderwoche wird an das Script übergeben
- Aus der KW wird der Montag berechnet als Timestamp z.B. (1287352800 für 18.10.2010 00:00:00)
- für jeden weiteren Tag in der Woche werden 86400 zum Timestamp addiert.
- Ist in der DB ein Eintrag mit genau diesem Timestamp gespeichert, wird der Eintrag am entsprechenden Tag angezeigt.

So ähnlich werden die Schichten auch in die DB geschrieben.

Sehr ihr da irgendwelche Probleme? Muss ich damit befürchten, dass es nach der Winterzeitumstellung nicht mehr übereinstimmt? Ich denke zwar nicht... aber sicher bin ich mir nicht. Ich hätte wohl von Anfang an alles mit gmmktime und gmdate programmieren sollen, dann müsste ich mir deswegen keine Gedanken machen. Aber wenn ich das im Nachhinein ändere, stimmen die Einträge nicht mehr
monk ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 30.08.2010, 20:00  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.241
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Zitat:
Muss ich damit befürchten, dass es nach der Winterzeitumstellung nicht mehr übereinstimmt?
Kommt drauf an, was „Aus der KW wird der Montag berechnet“ bedeuten mag.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 30.08.2010, 20:05  
Benutzer
 
Registriert seit: 19.01.2010
Beiträge: 34
PHP-Kenntnisse:
Fortgeschritten
monk befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von nikosch Beitrag anzeigen
Kommt drauf an, was „Aus der KW wird der Montag berechnet“ bedeuten mag.
Diese Funktion berechnet den Timestamp eines Montags aus der Kalenderwoche:

PHP-Code:
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

monk ist offline  
Alt 30.08.2010, 20:42  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.241
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Zitat:
firstkw($jahr);
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 30.08.2010, 20:46  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.241
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Da Du zeitrelational zu einem statischen Datum im Winter rechnest, dürftest Du auf jeden Fall Probleme bekommen. Wenn ich richtig folgere, zeigt Dein Kalender im Sommer jeweils auf Sonntag, 23:00 Uhr.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 30.08.2010, 20:46  
Benutzer
 
Registriert seit: 19.01.2010
Beiträge: 34
PHP-Kenntnisse:
Fortgeschritten
monk befindet sich auf einem aufstrebenden Ast
Standard

Entschuldige...


PHP-Code:
function firstkw($jahr)

   
$erster mktime(0,0,0,1,1,$jahr); 
   
$wtag date('w',$erster);

    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;

monk ist offline  
Alt 30.08.2010, 21:09  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.241
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Ich bin sicher, mit strtotime bekommst Du da was besseres hin. date_default_timezone_set nicht vergessen!
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 01.09.2010, 18:55  
Benutzer
 
Registriert seit: 19.01.2010
Beiträge: 34
PHP-Kenntnisse:
Fortgeschritten
monk befindet sich auf einem aufstrebenden Ast
Standard

Erstmal vielen Dank für Deine Antworten!

Ich bin immer noch nicht überzeugt dass es Probleme gibt, aber auch nicht dass es geben könnte .

Wenn ich heute Kalendereinträge mache, haben diese folgende Timestamps:
1271376000 2010-04-16 16.04.2010 02:00 1 Sommerzeit
1271376000 2010-04-16 16.04.2010 02:00 1 Sommerzeit
1292803200 2010-12-20 20.12.2010 01:00 0 Winterzeit
1292889600 2010-12-21 21.12.2010 01:00 0 Winterzeit
1292976000 2010-12-22 22.12.2010 01:00 0 Winterzeit
1293062400 2010-12-23 23.12.2010 01:00 0 Winterzeit

Wenn wir jetzt Dezember hätten, sollten dann die errechneten Timestamps für die selben Tage nicht immer noch die gleichen sein?

Wo könnte ich denn mit strtotime etwas besseres hinbekommen, als mit gmdate, gmmktime?
monk ist offline  
Alt 01.09.2010, 19:13  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.241
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Da liegt der Witz:

Zitat:
1271376000 2010-04-16 16.04.2010 02:00 1 Sommerzeit
1292803200 2010-12-20 20.12.2010 01:00 0 Winterzeit
Wenn Dir das egal ist, gibts auch kein Problem. Aber IMHO sollte ein Schichtplan-Tag auch um 0:00 anfangen. Spätestens wenn Du mit diesen Timestamps weiterrechnest.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 02.09.2010, 18:43  
Benutzer
 
Registriert seit: 19.01.2010
Beiträge: 34
PHP-Kenntnisse:
Fortgeschritten
monk befindet sich auf einem aufstrebenden Ast
Standard

Grundsätzlich ist es egal, da die Zeit nicht grafisch dargestellt wird. Der Wochenplan wird in einer Tabelle dargestellt, dabei ist eine Zelle = 1 Tag, die Schicht wird nur durch die Anzeige eines entsprechenden Textes und durch Farben unterschieden.

Mir gehts nur um das auslesen der eingetragenen Schichten. Solange ein Timestamp eines beliebigen Datums in der Winterzeit genau gleich ist wie in der Sommerzeit, dann gibts keine Probleme. Nur bin ich mir halt nicht sicher, ob das wirklich so ist, und ich weiss nicht wie ich das testen könnte.
monk ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
datumsproblem mysql - if flflfl PHP Tipps 2006 1 06.09.2006 11:19
[Erledigt] Wiedermal ein klassisches Datumsproblem PHP Tipps 2005 2 09.04.2005 22:41
Datumsproblem PHP Tipps 2005 9 09.02.2005 10:20
[Erledigt] Datumsproblem! PHP Tipps 2004-2 3 06.11.2004 17:29
Datumsproblem mit PHP4 und MSSQL PHP-Fortgeschrittene 0 20.09.2004 14:10
Datumsproblem PHP-Fortgeschrittene 1 20.09.2004 13:43


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:47 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum