Ich habe ein Projekt übernommen, bei dem u.a. für einen automatischen Seitenrefresh der Timestamp der nächsten halben bzw. vollen Stunde und die Differenz zwischen aktuellem Timestamp und Refresh-Timestamp (in Sekunden) berechnet werden muss. Das läuft momentan so ab:
Es sieht für mich auf den ersten Blick zwar so aus, als ob alle möglichen Tages-/Monats-/Jahreswechsel berücksichtigt werden, aber könnte man das nicht auch so machen?
Übersehe ich irgendeine Notwendigkeit, den Code so weit aufzublähen oder ist das einfach viel zu kompliziert geschrieben?
PHP:
//aktueller Timestamp
$timestamp_now = time();
//Schaltjahr ja/nein
$leap_year = date('L');
//aktuelles Datum und Zeit (Jahr/Monat/Tag/Stunde/Minute)
$year = date('Y');
$month = date('n');
$day = date('j');
$hour = date('H');
$minute = date('i');
//Zeit unter Beachtung von Tages-, Monats- und Jahreswechsel (inkl. Schaltjahre) auf die nächste halbe bzw. volle Stunde setzen
if($minute < 30){
$minute = 30;
}
elseif($hour < 23){
$minute = 0;
$hour += 1;
}
elseif(($day < 31 && ($month == 1 || $month == 3 || $month == 5 || $month == 7 || $month == 8 || $month == 10 || $month == 12)) || ($day < 30 && ($month == 4 || $month == 6 || $month == 9 || $month == 11)) || ($day < 29 && $month == 2 && $leap_year == 1) || ($day < 28 && $month == 2 && $leap_year == 0)){
$minute = 0;
$hour = 0;
$day += 1;
}
elseif($month < 12){
$minute = 0;
$hour = 0;
$day = 1;
$month += 1;
}
else{
$minute = 0;
$hour = 0;
$day = 1;
$month = 1;
$year += 1;
}
//Timestamp des Refresh-Zeitpunkts
$timestamp_refresh = mktime($hour, $minute, 0, $month, $day, $year);
//Differenz zwischen aktuellem Timestamp und Refresh-Timestamp
$timestamp_diff = $timestamp_refresh - $timestamp_now;
Es sieht für mich auf den ersten Blick zwar so aus, als ob alle möglichen Tages-/Monats-/Jahreswechsel berücksichtigt werden, aber könnte man das nicht auch so machen?
PHP:
//aktueller Timestamp
$timestamp_now = time();
//Timestamp des Refresh-Zeitpunkts
$timestamp_refresh = $timestamp_now/1800;
$timestamp_refresh = ceil($timestamp_refresh);
$timestamp_refresh *= 1800;
//Differenz zwischen aktuellem Timestamp und Refresh-Timestamp
$timestamp_diff = $timestamp_refresh - $timestamp_now;
Übersehe ich irgendeine Notwendigkeit, den Code so weit aufzublähen oder ist das einfach viel zu kompliziert geschrieben?