W mojej aplikacji PHP chcę obliczyć sumę dwóch zmiennych czasowych. Szukam czegoś podobnego do tego przykładu.PHP dodać dwie zmienne czasowe
$time1 = 15:20:00;
$time2 = 00:30:00;
$time = $time1+$time2;
W mojej aplikacji PHP chcę obliczyć sumę dwóch zmiennych czasowych. Szukam czegoś podobnego do tego przykładu.PHP dodać dwie zmienne czasowe
$time1 = 15:20:00;
$time2 = 00:30:00;
$time = $time1+$time2;
Najlepszym sposobem na to jest najbardziej prawdopodobne, aby użyć strtotime je konwertować do znaczników czasu, a następnie wykonaj zsumowanie:
$o = strtotime($time1)+strtotime($time2);
Jeśli dobrze pamiętam strtotime
nie obsługuje tego formatu.
W przeciwnym razie będziesz musiał sam go odfiltrować.
Można użyć PHP 5.3 DateInterval
:
$timeInterval = DateInterval::createFromDateString('15 hours + 20 minutes');
$timeInterval2 = DateInterval::createFromDateString('30 minutes');
foreach(str_split('ymdhis') as $prop)
{
$timeInterval->$prop += $timeInterval2->$prop;
}
var_dump($timeInterval->format('%H:%i:%s'));
(Jak dodać do obiektów DateInterval zostało wyjaśnione tutaj: How we can add two date intervals in PHP)
miarę Mogę powiedzieć, że odpowiedź Sammaye nie zadziałała.
Potrzebowałem rozpocząć godzinę, którą chciałem dodać wraz z początkiem znacznika czasu UNIX. W ten sposób strtotime
zwraca sekundy, które należy dodać za pierwszym razem.
$time1 = "15:20:00";
$time2 = "1970-01-01 00:30:00";
$time = strtotime($time1) + (strtotime($time2) + 3600);
echo $time . "<br />";
echo date("H:i:s", $time);
Pamiętaj, aby zapoznać się z mistycznymi docs http://us1.php.net/strtotime dodatkowych rzeczy, które można wprowadzić do swoich funkcji :)
$today = time();
$tommorrow = strtotime("+1 days", $today);
$day_after_tomorrow = strtotime("+1 days", $tomorrow);
Jeśli odpowiedź można się spodziewać jest 15:50:00
i chcesz używać strtotime
i date
funkcje, musisz odjąć sekundy od udostępnienia udziałów $time1
i $time2
, gdy przekształcisz je w znaczniki czasu unix:
$time1 = '15:20:00';
$time2 = '00:30:00';
$time = strtotime($time1) + strtotime($time2) - strtotime('00:00:00');
$time = date('H:i:s', $time);
To jest świetne i proste, ale byłoby bardziej istotne, jeśli możesz podać dalsze wyjaśnienia dotyczące odjęcia tego 0 wartości czasu. – rhavendc
Następująca odpowiedź nie zwraca poprawnej wartości. Podsumowuje liczby całkowite, ale nie zwraca właściwego czasu.
$ o = strtotime ($ time1) + strtotime ($ time2);
Utworzono funkcję, aby uzyskać obliczony czas w następujący sposób.
public function addTwoTimes($time1 = "00:00:00", $time2 = "00:00:00"){
$time2_arr = [];
$time1 = $time1;
$time2_arr = explode(":", $time2);
//Hour
if(isset($time2_arr[0]) && $time2_arr[0] != ""){
$time1 = $time1." +".$time2_arr[0]." hours";
$time1 = date("H:i:s", strtotime($time1));
}
//Minutes
if(isset($time2_arr[1]) && $time2_arr[1] != ""){
$time1 = $time1." +".$time2_arr[1]." minutes";
$time1 = date("H:i:s", strtotime($time1));
}
//Seconds
if(isset($time2_arr[2]) && $time2_arr[2] != ""){
$time1 = $time1." +".$time2_arr[2]." seconds";
$time1 = date("H:i:s", strtotime($time1));
}
return date("H:i:s", strtotime($time1));
}
Jak próbowałeś to zrobić? – Fluffeh
Czy masz przykłady, jak powinny wyglądać twoje wyniki? – Pete
Klasy DateTime i DateInterval. http://www.php.net/manual/en/book.datetime.php – dnagirl