7
votes

fonction pour la conversion du temps au nombre de secondes

Sur notre site, nous avons beaucoup de temps de natation que nous aimerions convertir en quelques secondes. I.E. 1: 23: 33.03 ou 58: 22.43. Y a-t-il une fonction PHP qui peut faire cela? Une fonction mysql?


0 commentaires

7 Réponses :


-1
votes

Strtotime est ce dont vous avez besoin. Vous obtenez un horodatage UNIX qui dans ce cas serait le nombre de secondes.


2 commentaires

Pas tellement à la recherche d'une heure de la journée, à la recherche d'une conversion d'une durée de nage dans HH: mm: Ss.xx ou mm: Ss.xx à TOTAL secondes


Encore une fois, vous pouvez simplement utiliser Strtotime pour convertir entre Timelaps au total des secondes.



8
votes
function time2seconds($time='00:00:00')
{
    list($hours, $mins, $secs) = explode(':', $time);
    return ($hours * 3600 ) + ($mins * 60 ) + $secs;
}
From here.MySQL also has TIME_TO_SEC()

3 commentaires

Je ne voudrais probablement pas le nommer comme ça, mais c'est la bonne idée.


@jasonbar: Vous avez volé ma réponse


En fait j'ai réussi à ne pas voler. Et je pose mon commentaire sur "Voler" avant de voir son "pourquoi le bowvote?". Donc, mon commentaire n'est pas une réponse à cela. Et juste après cela j'ai changé de vote à +1 pour être poli ;-)



-1
votes

Je suis un peu confus mais je pense que tu veux dire. 1 heure, 23 minuts et 23,03 secondes.

Ce n'est pas difficile à faire. J'ai fait cette fonction PHP qui le fait. Mon serveur PHP ne veut pas démarrer, alors je ne pouvais donc pas le tester, mais je pense que cela devrait fonctionner. P>

function ConvertTimeToSeconds($T)
{
    $exp = explode(":",$T);
    $c = count($exp);
    $r = 0;
    if ($c == 2)
    {
        $r = (((int)$exp[0]) * 60) + ((int)$exp[1]);
    }else{
        $r = (((int)$exp[0]) * 3600) + (((int)$exp[1]) * 60) + ((int)$exp[2]);
    } 

    return $r;
}

ConvertTimeToSeconds("1:23:33.03");


0 commentaires

11
votes

3 commentaires

@zerkms - Qu'en est-il des fractions de secondes?


rien. MySQL n'a pas de fractions à son temps / DateTime DaTatypes: -S


En réalité, MySQL vous permettra de spécifier des microsecondes dans les littéraux de date / heure passés aux différentes fonctions de date / heure et de valeur de retour de certaines de ces fonctions. Il ne les stockera tout simplement pas dans des colonnes de date, de DateTime ou d'horodatage.



0
votes

Donc, si MySQL sans fractions pas une solution appropriée - voici une autre mine

$time = '1:23:33.03';

$parts = explode(':', $time);

$seconds = 0;

foreach ($parts as $i => $val) {
    $seconds += $val * pow(60, 2 - $i);
}

echo $seconds;


0 commentaires

1
votes

Utilisez le programme suivant pour convertir le temps en secondes dans PHP.

<?php
function time_to_sec($time) {
    $hours = substr($time, 0, -6);
    $minutes = substr($time, -5, 2);
    $seconds = substr($time, -2);

    return $hours * 3600 + $minutes * 60 + $seconds;
}

$result=time_to_sec('12:25:59');
echo $result;
?>


0 commentaires

1
votes

$ actuel_time_in_seconds = "01: 21: 44.24"; XXX

obtiendra de

01: 21: 44.24

à

4904.24


1 commentaires

Maintenant, pourquoi je n'ai pas pensé à ça ...? :-)