• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Timestamp der nächsten halben/vollen Stunde

Der Hans

Mitglied
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:

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?
 
Werbung:
Das ist vermutlich zu kompliziert geschrieben. Wobei mir auch neu ist, dass das so glatt aufzugehen scheint mit vollen Stunden und Teilbarkeit des Timestamps durch die entsprechende Sekundenzahl.
 
Zurück
Oben