mmofacts.com

Timestamp -> Verbleibende Zeit

gepostet vor 19 Jahre, 7 Monate von AlphaWolf
Da ich in PHP keine Funktion gefunden habe(date funzt ja nur, wenn man ein Datum darstellen will denke ich) die mir einen Timestamp, der die verbleibende Zeit signalisiert in Stunden-Minuten-Secunden zurückgibt habe ich selbst eine gebastelt. Ich hoffe es sagt mir jetzt nicht jemand, dass es es da doch was simples für gäbe. Mich hats etwas Zeit gekostet, also, falles es jemand noch für sein BG braucht stellt ich es gern zur verfügung. Das Teil kann man natürlich noch um größere Einheiten erweitern.


 

public static function makeBuildTime($timestamp)
{
if (($timestamp) <= 60)
{
$time['day'] = 0;
$time['hour'] = 0;
$time['minute'] = 0;
$time['second'] = $timestamp;
return $time;
}
if (($timestamp / 60) <= 60)
{
$time['day'] = 0;
$time['hour'] = 0;
$time['minute'] = floor($timestamp / 60);
$time['second'] = $timestamp - ($time['minute'] * 60);
return $time;
}
//0 ist platzhalter solang keine größeren Einheiten drin sind.
if (($timestamp / 3600) != 0)
{
$time['day'] = 0;
$time['hour'] = floor($timestamp / 3600);
$time['minute'] = floor(($timestamp - ($time['hour'] * 3600)) / 60);
$time['second'] = $timestamp - ($time['hour'] * 3600 + $time['minute'] * 60);
return $time;
}

}
gepostet vor 19 Jahre, 7 Monate von Gambler
Ich versteh den Sinn von dem ganze nicht wirklich da das mit date genauso geht. Solang nix über 31Tage geht kann man die benutzen. Rechnet zwar ab 1970 aber das ist völlig egal wenn meine höchste Einheit Tage sind.
gepostet vor 19 Jahre, 7 Monate von AlphaWolf
Weil man das so besser Handhaben kann als das ganze als string von der date Funktion zu bekommen.
gepostet vor 19 Jahre, 7 Monate von TheUndeadable
Oder

$ahDay [ 'day' ] = strftime ( '%d', $nTimestamp );
$ahDay [ 'hour' ] = strftime ( '%H', $nTimestamp );

etc, evtl nicht so perfomant:

Oder folgende Lösung:
$format = '%d/%m/%Y %H:%M:%S';
$strf = strftime($format);

echo "$strf\n";

print_r(strptime($strf, $format));
?>

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:

03/10/2004 15:54:19

Array
(
[tm_sec] => 19
[tm_min] => 54
[tm_hour] => 15
[tm_mday] => 3
[tm_mon] => 9
[tm_year] => 104
[tm_wday] => 0
[tm_yday] => 276
[unparsed] =>
)

BTW: Folgende Zeile kannst du abkürzen:

$time['second'] = $timestamp - ($time['minute'] * 60);
int
$ime [ 'second' ] = $timestamp % 60;

Auf diese Diskussion antworten