2010-08-05 19 views
0

Donc, ce que j'essaie de faire est d'ajouter deux chaînes ensemble sous la forme de temps militaire. Voici l'exemple.ajouter le temps militaire dans la représentation de la chaîne

Temps1 = "01:00"; Time2 = "04:30"; L'addition des deux ensemble produirait "05:30". Cela semble incroyablement simple, mais cela a été une longue journée pour un nouvel apprenant. Toute aide serait grandement appréciée.

+0

Bien oublier le formatage ou dire l'heure militaire. Compte tenu de l'exemple, comment prendriez-vous Time1 et Time2 et l'ajouter pour obtenir "05:30". Faire l'addition simple arrondit simplement le nombre, ce qui n'est pas ce dont j'ai besoin. –

Répondre

2

Vous pouvez faire quelque chose comme ça en PHP 5.3:

$d = new DateTime("01:00"); 
$f = $d->add(new DateInterval("PT04H30M")); 
echo $f->format("H:i"); //outputs 05:30 

04h30 à la conversion PT04H30M devrait être trivial. Notez que cela dépend de ce que vous entendez par "04:30". Ce code peut additionner ou non 4 * 60 + 30 minutes à l'heure actuelle.

Si vous voulez dire "4 heures et 30 minutes sur l'horloge", c'est toujours correct. Cependant, si vous voulez dire "4 * 60 + 30 minutes", cela dépend du jour et du fuseau horaire. Exemple:

$d = new DateTime("2010-03-28 01:00 Europe/Lisbon"); 
$f = $d->setTimestamp($d->getTimestamp() + (4*60+30)*60); 
echo $f->format("H:i"); //outputs 06:30 due to DST 

Une autre mise en oeuvre du dernière cas (en supposant jour actuel et le fuseau horaire par défaut) pour PHP 5.2 est

echo date("H:i", strtotime("+4 hours +30 mins", strtotime("01:00"))); 

Pour le premier cas, nous devons faire:

date_default_timezone_set("UTC"); 
echo date("H:i", strtotime("+4 hours +30 mins", strtotime("01:00"))); 
+0

Et dire que mon hôte n'a pas mis à jour à 5.3? Toutes les suggestions (Au-delà de l'évidence de la commutation des hôtes!) –

+0

@Brian J'ai ajouté des solutions pour PHP 5.2. – Artefacto

+0

Vous monsieur, sont fantastiques! Exactement ce que je cherchais. J'ai honnêtement passé un bon 45 minutes sur Google à la recherche sans fin. Très appréciée. –