Je voudrais convertir une variable $uptime
qui est secondes, en jours, heures, minutes et secondes.
Exemple:
$uptime = 1640467;
Le résultat doit être:
18 days 23 hours 41 minutes
Cela peut être réalisé avec la DateTime
classe
Utilisation:
echo secondsToTime(1640467);
# 18 days, 23 hours, 41 minutes and 7 seconds
Fonction:
function secondsToTime($seconds) {
$dtF = new \DateTime('@0');
$dtT = new \DateTime("@$seconds");
return $dtF->diff($dtT)->format('%a days, %h hours, %i minutes and %s seconds');
}
@
signifie lorsqu'il est passé en argument auDateTime
constructeur?@
est l'horodatage unix.Il s'agit de la fonction réécrite pour inclure les jours. J'ai également changé les noms des variables pour rendre le code plus facile à comprendre ...
Source: CodeAid () - http://codeaid.net/php/convert-seconds-to-hours-minutes-and-seconds-(php)
la source
Basé sur la réponse de Julian Moreno, mais modifié pour donner la réponse sous forme de chaîne (pas de tableau), n'incluez que les intervalles de temps requis et ne supposez pas le pluriel.
La différence entre cette réponse et la réponse la plus élevée est:
Pendant
259264
quelques secondes, ce code donneraitPendant
259264
quelques secondes, la réponse la plus votée (par Glavić) donneraitJ'espère que ça aidera quelqu'un.
la source
Voici une simple fonction PHP de 8 lignes qui convertit un certain nombre de secondes en une chaîne lisible par l'homme, y compris le nombre de mois pour de grandes quantités de secondes:
Fonction PHP seconds2human ()
la source
Le résultat sera 19 23:41:07. Lorsqu'il ne reste qu'une seconde de plus qu'un jour normal, cela augmente la valeur du jour pendant 1 jour. C'est pourquoi il affiche 19. Vous pouvez exploser le résultat pour vos besoins et résoudre ce problème.
la source
$uptime = gmdate("y m d H:i:s", 1640467); $uptimeDetail = explode(" ",$uptime); echo (string)($uptimeDetail[0]-70).' year(s) '.(string)($uptimeDetail[1]-1).' month(s) '.(string)($uptimeDetail[2]-1).' day(s) '.(string)$uptimeDetail[3];
Cela vous donnera également des informations sur l'année et le mois.Il y a de très bonnes réponses ici mais aucune d'entre elles ne répondait à mes besoins. J'ai construit sur la réponse de Glavic pour ajouter quelques fonctionnalités supplémentaires dont j'avais besoin;
Vous pouvez voir une version en cours d'exécution du code here.
la source
Court, simple, fiable:
la source
L'approche la plus simple serait de créer une méthode qui renvoie un DateInterval à partir de DateTime :: diff de l'heure relative en $ secondes à partir de l'heure actuelle $ now que vous pouvez ensuite enchaîner et formater. Par exemple:-
Maintenant, chaînez votre appel de méthode à DateInterval :: format
Résultat:
la source
Bien que ce soit une question assez ancienne - on peut les trouver utiles (pas écrites pour être rapides):
résultat:
la source
la source
la source
Solution qui devrait exclure les valeurs 0 et définir des valeurs singulières / plurielles correctes
la source
une version étendue de l'excellente solution de Glavić , ayant une validation entière, résolvant le problème 1 s et un support supplémentaire pendant des années et des mois, au détriment d'être moins convivial pour l'analyse informatique au profit d'être plus convivial:
var_dump(secondsToHumanReadable(1*60*60*2+1));
->string(16) "2 hours 1 second"
la source
La classe d'intervalle que j'ai écrite peut être utilisée. Il peut également être utilisé de manière opposée.
Plus d'infos ici https://github.com/LubosRemplik/CakePHP-Interval
la source
Avec DateInterval :
la source
Voici un code que j'aime utiliser pour obtenir la durée entre deux dates. Il accepte deux dates et vous donne une belle réponse structurée en phrases.
Ceci est une version légèrement modifiée du code trouvé ici .
Source: https://gist.github.com/ozh/8169202
la source
Le tout en une seule solution. Ne donne aucune unité avec des zéros. Ne produira que le nombre d'unités que vous spécifiez (3 par défaut). Assez long, peut-être pas très élégant. Les définitions sont facultatives, mais peuvent s'avérer utiles dans un grand projet.
N'hésitez pas à voter contre, mais assurez-vous de l'essayer dans votre code. C'est peut-être ce dont vous avez besoin.
la source
La solution pour celui-ci que j'ai utilisée (à l'époque en apprenant PHP) sans aucune fonction intégrée:
Bien que ce soit une vieille question, les nouveaux apprenants qui rencontrent cette question peuvent trouver cette réponse utile.
la source
la source
J'édite l'un des codes pour qu'il fonctionne bien lorsque la valeur négative vient.
floor()
La fonction ne donne pas le compte correct lorsque la valeur est négative. Nous devons donc utiliser laabs()
fonction avant de l'utiliser dans lafloor()
fonction.$inputSeconds
variable peut être la différence entre l'horodatage actuel et la date requise.la source
Une variante de la réponse de @ Glavić - celle-ci masque les zéros non significatifs pour des résultats plus courts et utilise des pluriels aux bons endroits. Cela supprime également les précisions inutiles (par exemple, si le décalage horaire est supérieur à 2 heures, vous ne vous souciez probablement pas du nombre de minutes ou de secondes).
la source
Je ne sais pas pourquoi certaines de ces réponses sont ridiculement longues ou complexes. En voici un qui utilise la classe DateTime . Un peu similaire à la réponse de radzserg. Cela n'affichera que les unités nécessaires, et les temps négatifs auront le suffixe `` il y a '' ...
EDIT: Si vous souhaitez condenser l'exemple ci-dessus pour utiliser moins de variables / d'espace (au détriment de la lisibilité), voici une version alternative qui fait la même chose:
la source
$thetime
dans le retour, par exempleisset($thetime)
La valeur $ provient de la base de données. Ce code est dans Codeigniter. $ SESSION est utilisé pour stocker les abonnements des utilisateurs. c'est obligatoire. Je l'ai utilisé dans mon cas, vous pouvez utiliser ce que vous voulez.
la source
$value
vient-il? Pourquoi avez-vous voulu introduire une session? Comment cela renvoie-t-il la chaîne appropriée pour les secondes, les minutes et les heures?C'est une fonction que j'ai utilisée dans le passé pour soustraire une date à une autre liée à votre question, mon principe était de savoir combien de jours, heures, minutes et secondes il reste jusqu'à ce qu'un produit expire:
la source