Hey guys!

Hoe kan ik het beste een timestamp converteren naar het aantal minuten, uren, dagen, wekend en maanden?
Het ligt eraan wat je precies wilt doen? de date functie heeft als tweede optionele parameter een timestamp, dus als je slechts een datum wil formateren en op het scherm wil tonen kun je die functie gewoon gebruiken:
<?php
$timestamp = time();
echo date('d-m-Y H:i:s', $timestamp);
?>
Een (beter) alternatief is het DateTime object, daarmee kun je ook nog met data rekenen etc:
<?php
$timestamp = time();
$date = new DateTime();
$date->setTimestamp($timestamp);
echo $date->format('d-m-Y H:i:s');
?>
Nee ik wil weten hoeveel dagen, uren en minuten een timestamp heeft. Dus timestamp 7260 is 2 uur en 1 minuut
<?php
// totaal aantal uren/minuten/dagen etc
$tijd= 1449327276; // 14:54:36 op 5-12-2015
$minuten = floor($tijd/ 60);
$uren = floor($tijd/ (60 * 60);
$dagen = floor($tijd/ (24 * 60 * 60 );

// optellend dagen > uren > minuten > seconden
$tijd = 1449327276; // 14:54:36 op 5-12-2015
$minuut = 60;
$uur = 60 * $minuut;
$dag = 24 * $uur;

$dagen = floor($tijd / $dag);
$uren = floor($tijd - ($dagen * $dag) / $uur);
$minuten = floor($tijd - (($dagen * $dag)+($uren * $uur)) / $minuut);
$seconden = $tijd % $minuut;

?>
Eddy, dit had ik zelf ook ongeveer, het punt is dat de uren nu 24+ weergeven, maar dat moet gewoon in dagen dus zal nog wat moeten rekenen, ik ben op weg in ieder geval :)
Zie mijn edit.
Die werkte niet helemaal lekker. Had de mijne al klaar en even gekeken naar de jouwe maar die deed niet wat ik wou.

Mijn resultaat:


 public static function timestampToMinuteHourDay($time, $type){
        
        $minutes = floor($time / 60);
        $hours = floor($time / (60 * 60));
        $days = floor($time / (24 * 60 * 60 ));

        $minutes = $minutes - ($hours * 60);
        $hours = $hours - ($days * 24);

        $values = [
            'days' => $days,
            'hours' => $hours,
            'minutes' => $minutes,
        ];

        dd($values);

        return $values[$type];
    }

Zoiets?
http://eddyerkelens.nl/phphulp.php

Zelfde maniertje eigenlijk.
Code:

<?php

$tijdstip = 1449327276; // 14:54:36 op 5-12-2015

$tijd = $tijdstip; // kopieren
$minuut = 60;
$uur = $minuut * 60;
$dag = $uur * 24;
$week = $dag * 7;
$jaar = $dag * (364 + date("L"));

// eerst jaren
$jaren = floor($tijd / $jaar);
$tijd = $tijd - ($jaren * $jaar);

// dan weken
$weken = floor($tijd / $week);
$tijd = $tijd - ($weken * $week);

// dan dagen
$dagen = floor($tijd / $dag);
$tijd = $tijd - ($dagen * $dag);

// dan uren
$uren = floor($tijd / $uren);
$tijd = $tijd - ($uren * $uur);

// dan minuten
$minuten = floor($tijd / $minuut);
$tijd = $tijd - ($minuten * $minuut);

// dan seconden
$seconden = $tijd;

echo 'Tussen 1-1-1900 00:00:00 en '.date("d-m-Y H:i:s", $tijdstip). 'zitten:<br>';
echo $jaren. ' jaren<br>';
echo $weken. ' weken<br>';
echo $dagen. ' dagen<br>';
echo $uren. ' uren<br>';
echo $minuten. ' minuten<br>';
echo $seconden. ' seconden<br>';
Ik denk dat ik verkeerd heb aangegeven dat ik niet wil rekenen tussen 2 datums. Het gaat puur om het kijken wat de dagen/uren etc zijn van een timestamp
?
Je wilt het aantal jaren, dagen, uren minuten en seconden vanaf 1 januari 1970 GMT?
En om direct al met de jaren te beginnen, dan zul je rekening moeten houden met schrikkeljaren. Idem voor aantal dagen/maanden.

Reageren