PHP Zeiten runden

Überkinger

Lieutenant
Registriert
Juli 2010
Beiträge
600
Hallo,

ich möchte Zeiten runden und bin mir unschlüssig ob dieser Weg ok ist.

PHP:
$timestamp = filemtime ($quelle_htm);
$prog_minute = date ("i",filemtime ($quelle_htm);
	if ($prog_minute >= 00 AND $prog_minute <= 15) {
	$minute = 15;
	}
	if ($prog_minute >= 16 AND $prog_minute <= 30) {
	$minute = 30;
	}
	if ($prog_minute >= 31 AND $prog_minute <= 45) {
	$minute = 45;
	}
	if ($prog_minute >= 46 AND $prog_minute <= 59) {
	$minute = 59;
	}

Klappt auch prima. Nur unschön wenn die Ausgabezeit zwischen xx:45 und xx:59 Uhr liegt.

Ich hätte jetzt folgendes gemacht:

if ($prog_minute >= 46 AND $prog_minute <= 59) {
$timestamp = $timestamp +3600;
$proghour = date("G",$timestamp);
$minute = 00;
}
 
Ich sehe das auch so, dass es nicht sinnvoll ist wie du es hier machst. Wozu verwendest du anschließend den Zeitstempel?
 
IceMatrix schrieb:
Ich sehe das auch so, dass es nicht sinnvoll ist wie du es hier machst. Wozu verwendest du anschließend den Zeitstempel?

Den Zeitstempel im Linux-Rohformat schreibe ich später noch in die Datenbank.
 
Ok.. die vermutlich einfachste und intuitivste Lösung ist es, die Sekunden (0-59) und die Minuten (0-59) über date() aus dem Zeitstempel zu extrahieren. Dann ziehst du die Sekunden vom Zeitstempel ab (also auf volle Minuten abgerundet). Anschließend addierst du die Minuten, die du zum Aufrunden auf Viertelstunden brauchst.. also im Prinzip sowas hier:

Code:
$ts = filemtime ($quelle_htm);
$sec = (int)date('%s', $ts);
$min = (int)date('%i', $ts);
$ts -= $sec; // auf volle Minute abrunden
if ($min <= 15) {
  $ts += (15 - $min) * 60;
}
else if ($min <= 30) {
  $ts += (30 - $min) * 60;
}
...

Noch ein kurzer Hinweis zu deinem Code, da du offenbar PHP Anfänger bist:
1) AND ist eher bei altem PHP-Code geläufig. Bei neueren Quellcodes wird bevorzugt && verwendet.
2) Du rufst 2x filemtime ($quelle_htm) auf. Rufe es lieber nur 1x auf und speichere das Ergebnis in einer lokalen Variable.
 
Zuletzt bearbeitet:
IceMatrix schrieb:
Ok.. die vermutlich einfachste und intuitivste Lösung ist es, die Sekunden (0-59) und die Minuten (0-59) über date() aus dem Zeitstempel zu extrahieren. Dann ziehst du die Sekunden vom Zeitstempel ab (also auf volle Minuten abgerundet). Anschließend addierst du die Minuten, die du zum Aufrunden auf Viertelstunden brauchst.. also im Prinzip sowas hier:

Code:
$ts = filemtime ($quelle_htm);
$sec = (int)date('%s', $ts);
$min = (int)date('%i', $ts);
$ts -= $sec; // auf volle Minute abrunden
if ($min <= 15) {
  $ts += (15 - $min) * 60;
}
else if ($min <= 30) {
  $ts += (30 - $min) * 60;
}
...

Noch ein kurzer Hinweis zu deinem Code, da du offenbar PHP Anfänger bist:
1) AND ist eher bei altem PHP-Code geläufig. Bei neueren Quellcodes wird bevorzugt && verwendet.
2) Du rufst 2x filemtime ($quelle_htm) auf. Rufe es lieber nur 1x auf und speichere das Ergebnis in einer lokalen Variable.


Hallo,

vielen Dank für den Hinweis. Ja, bin blutiger Anfänger, der zudem nicht gerade ein Meister in der englischen Sprache ist. Daher muss ich mir jede Funktion hart erarbeiten.

Dein Code sieht interessant aus.

In meinem Code habe ich die Zeit jetzt in eine temporäre variable geschrieben und verwende diese. Für mich ist das so am einfachsten gewesen. Einfach auf den Zeitstempel +3600 Sekunden, dann habe ich in jedem Fall den Stundenzähler eins hochgesetzt und kann daraus dann die Stunde ziehen. Anfangs habe ich die Linuxzeit gehasst, hier liebe ich sie.
 
Zurück
Oben