2012-03-26 15 views
0

Wahrscheinlich mache ich etwas falsch, aber ich kann nicht den Punkt davon sehen ....php date & strtotime

Heute ist ein Tag der Woche. Ich muss wissen - wie viele Tage sind vom letzten Montag bis heute vergangen?

$date_1d = date('Y-m-d', strtotime ('last Monday'));      
// last monday 

$date_today = date('Y-m-d');            
// actual date, today 

$ile_dni = (strtotime($date_today) - strtotime($date_1d))/(60*60*24); 
// difference in days - how many days have elapsed from today to last monday 

Ich habe 2 identische Skripte wie oben im gleichen Verzeichnis auf dem gleichen Server

first said: 

&date_1d = > 2012-03-19 

$date_today => 2012-03-26 

strtotime($date_today) = > 1332720000 

strtotime($date_1d) = > 1332115200 

$ile_dni = > 7 

second said: 

&date_1d = > 2012-03-19 

$date_today => 2012-03-26 

strtotime($date_today) = > 1332712800 

strtotime($date_1d) = > 1332111600 

$ile_dni = > 6.9583333333333 

Couse die richtige Antwort ist die erste. Und was ist mit dieser Situation zu tun?

+3

was ist falsch mit 'date ('N')' – Vytautas

Antwort

1

Verwendung ceil() auf den $ile_dni die Unterschiede zu dem Zeitstempel sind aus ‚letzten Montag‘ erzeugt und strtotime und ich bin sicher, dass es ein besserer Weg, dies mit date('N') zu tun, könnten Sie

tun
$ile_dni = date('N')-1; 

wenn du wolltest, dass ile_dni 0 am Montag, 1 am Dienstag usw. ist.

+0

thnks, jetzt werde ich versuchen mit Zelle() und was zu sehen wird sein. thnks – Andrew

1

Haben Sie diese beiden Skripte gleichzeitig ausgeführt? Ich vermute, da ist ein Zeitzonen-/DST-Problem. Beachten Sie, dass Ihre Methode zur Berechnung von Datumsunterschieden sehr anfällig für diese Art von Problemen ist. Wenn Sie PHP 5.3 oder höher verwenden, verwenden Sie date_diff.

+0

thnks für deine Hilfe – Andrew