ci-dessous est ma fonction qui prendra un horodatage et vous dire le temps écoulé à partir de maintenant dans le format de 23 jours 3 heures 4 minutes 6 secondesEst-ce que ma fonction de différence de temps PHP peut être améliorée?
Le principal problème est sur mon site j'utiliser DATETIME mysql Au lieu de TIMESTAMP, pour utiliser cette fonction, je dois convertir mon datetime de mysql en timestamp, puis l'exécuter via ma fonction. Donc, je suis curieux, y at-il une meilleure façon de faire cela, sur certaines pages où j'ai 100 résultats mysql, PHP doit convertir 100 dates en horodatages et ensuite exécuter sur 100 d'entre eux.
Je me demande s'il y a une meilleure méthode de performance, et s'il vous plaît ne recommande pas tous les frameworks PHP (zend, etc.)
Appréciez des conseils/aide
function duration($timestamp) {
$years = floor($timestamp/(60 * 60 * 24 * 365));
$timestamp %= 60 * 60 * 24 * 365;
$weeks = floor($timestamp/(60 * 60 * 24 * 7));
$timestamp %= 60 * 60 * 24 * 7;
$days = floor($timestamp/(60 * 60 * 24));
$timestamp %= 60 * 60 * 24;
$hrs = floor($timestamp/(60 * 60));
$timestamp %= 60 * 60;
$mins = floor($timestamp/60);
$secs = $timestamp % 60;
$str = "";
if ($years == 1) {
$str .= "{$years} year ";
}elseif ($years > 1) {
$str .= "{$years} yearss ";
}
if ($weeks == 1) {
$str .= "{$weeks} week ";
}elseif ($weeks > 1) {
$str .= "{$weeks} weeks ";
}
if ($days == 1) {
$str .= "{$days} day ";
}elseif ($days > 1) {
$str .= "{$days} days ";
}
if ($hrs == 1) {
$str .= "{$hrs} hour ";
}elseif ($hrs > 1) {
$str .= "{$hrs} hours ";
}
if ($mins == 1) {
$str .= "{$mins} minute ";
}elseif ($mins > 1) {
$str .= "{$mins} minutes ";
}
if ($mins < 1 && $secs >= 1) {
$str .= "{$secs} seconds ";
}
return $str;
}