PHP сложить две переменные времени
В моем приложении PHP я хочу рассчитать сумму двух временных переменных. Я ищу что-то вроде этого примера.
$time1 = 15:20:00; $time2 = 00:30:00; $time = $time1+$time2;
дата и время не могут быть добавлены напрямую, извлеките Sammaye ответ, сначала нужно преобразовать их в строки, а затем добавить.
Это может вам помочь: stackoverflow.com/a/37893459/3164430 Я очень много вопросов, пожалуйста, прокомментируйте
7 ответов
Лучший способ сделать это, скорее всего, будет использовать strtotime, чтобы преобразовать их в метки времени, а затем выполнить добавление вместе:
Если я помню, что правильный strtotime поддерживает этот формат.
В противном случае вам нужно будет отфильтровать его самостоятельно.
@Rakesh Нет, time () возвращает временную метку текущего времени, поэтому вы хотите использовать time ()
@Rakesh Подождите, что вы имеете в виду? Какую часть текущего времени вы хотите добавить? час: сек: минута? try: strtotime(date(‘H:i:s’))+strtotime($mysql_time)
@cha, каков ваш код, вы можете обнаружить, что strtotime не работает должным образом, но это суммирование двух целых чисел, то есть 1 + 1, так как этот код не может действительно потерпеть неудачу без сбоя основной математической библиотеки PHPs
@Sammaye Да. Это сумма двух целых. Но в итоге вернул неправильный ответ. Я создал простую функцию. Пожалуйста, смотрите мой ответ ниже.
Следующий ответ не возвращает правильное значение. Он суммирует целые числа, но не возвращает правильное время.
$o = strtotime ($ time1) + strtotime ($ time2);
Я создал функцию для вычисления рассчитанного времени следующим образом.
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)); >
Да. Это правда. Мы можем использовать этот вид решения, пока не найдем лучший подход для решения этой проблемы.
Если ответ, который вы ожидаете, 15:50:00 , и вы хотите использовать функции strtotime и date , вы должны вычесть секунды $time1 и $time2 share при преобразовании их в отметки времени unix:
$time1 = '15:20:00'; $time2 = '00:30:00'; $time = strtotime($time1) + strtotime($time2) - strtotime('00:00:00'); $time = date('H:i:s', $time);
Это здорово и просто, но было бы более уместно, если бы вы могли дать дополнительные объяснения о вычитании этого значения времени 0.
Вы можете использовать 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' ) );
(Как добавить к объектам DateInterval: Как добавить два интервала дат в PHP)
Обязательно проконсультируйтесь с мистическими документами http://us1.php.net/strtotime для дополнительных вещей, которые вы можете ввести в свои функции:)
$today = time(); $tommorrow = strtotime("+1 days", $today); $day_after_tomorrow = strtotime("+1 days", $tomorrow);
Насколько я могу судить, ответ Sammaye не помог мне.
Мне нужно было запустить время, которое я хотел добавить с началом отметки времени UNIX. Таким образом, strtotime возвращает секунды, которые необходимо добавить в первый раз.
$time1 = "15:20:00"; $time2 = "1970-01-01 00:30:00"; $time = strtotime($time1) + (strtotime($time2) + 3600); echo $time . "
"; echo date("H:i:s", $time);
$time1 = '15:20:00'; $time2 = '00:30:00'; $time = strtotime($time1)+strtotime($time2); $sumtime = date("H:i:s",$time);
Ещё вопросы
- 1 Как открыть одно и только одно окно одним нажатием кнопки?
- 1 Как я могу создать локализуемый UserControl?
- 0 Изменить размер Div динамически
- 1 Атрибуты класса, определенные в __init __ (), против атрибутов, определенных методом класса
- 0 MySQL — лучшая практика для получения строк с количеством деталей
- 0 Сохранить файл PDF на сервер
- 1 Как скопировать файл из папки в другую папку с помощью Windows Service C #
- 1 Тип вывод странность
- 1 Период панд с пользовательской продолжительностью
- 1 Разбор XML-файла в Java с использованием DOM
- 1 Сбой приложения при использовании ProgressDialog в AsyncTask
- 0 SQL-запрос принимает январь месяц как 13 вместо 01
- 0 Утечка памяти при использовании Singleton для многопоточной среды
- 1 Как получить разные цвета для разных диапазонов значений в простых линейных графиках Google?
- 1 Python не может найти это сгруппированное имя
- 0 HTML-теги не работают для моего цикла for
- 0 как посчитать количество скрытых элементов ввода в Div
- 1 «Импорт […] конфликтует с типом, определенным в том же файле» ошибка [Java]
- 1 Как получить значение столбца DataTable с массивом?
- 1 div видимый false на стороне сервера с использованием класса div в c #
- 1 Усечение строки до количества символов X?
- 0 Получить видео идентификаторы из плейлиста ID — YouTube API V3
- 1 Этот код дает мне ошибку несовместимых типов. Он говорит, что требуется сканер, но обнаружил строку. Я не понимаю, как я могу это исправить
- 1 Не могу загрузить файл в мое хранилище Firebase — ошибка 403 Запрещено
- 0 не работает
- 0 В пользовательском интерфейсе jQuery не работают вкладки пользовательского интерфейса jQuery (карта Google V3)
- 1 Конфигурационные файлы, редактируемые после `npm run build`
- 0 Неправильный CSqlDataProvider сортировка атрибутов текста
- 1 D3 с пользовательским элементом: TypeError: t is null
- 0 css первая буква исключить другие теги
- 3 Не удалось разрешить com.android.support:support-compat:26.1.0
- 0 граница не расширяется — css
- 1 Как заменить прозрачный цвет в подушку
- 1 Как проверить, есть ли у элемента дублированные атрибуты с помощью cheerio js
- 0 AngularJS $ http запрос на исправление не отправляет данные
- 1 Пандейские рассуждения о способе условного обновления нового значения из других значений в той же строке в DataFrame
- 1 Java Swing: включение / отключение компонентов определенного типа
- 1 Ошибка Play Console 403 после принятия приглашения
- 1 Получение параметров метода как объекта [] в C #
- 0 Преобразование координат SVG в координаты карты изображения HTML
- 0 Как мне прочитать массив структур из файла и отсортировать его?
- 0 Как получить доступ к данным $ _POST для нескольких форм
- 1 NeedHelp Отладка: добавление двух списков ArrayLists с использованием метода — Java
- 0 ограничение размера изображения лайтбокса
- 0 Eclipse IDE для C ++
- 0 Не удается заставить кнопки радио работать в режиме ng-repeat с надписями со шрифтами
- 1 Какие версии Android NDK поддерживают 64-разрядные архитектуры?
- 1 Разрешение захваченного изображения OpenCV против фотоаппарата
- 1 Предварительные знания об атрибутах?
- 1 Реализация: проверка номера телефона не выполняется с помощью google-libphonenumber
Суммирование времени
Правильный вариант должен быть 00:00:10, а показывает 13:42:44. Если в массиве будет 2 значения «’00:01′, ’00:05′», то ответ покажет «00:06:00» (или это совпадения, но показывает на 6 секунд, а 6 минут), но когда добавляется 3 вариант все ломается.
Поиск времени и диапазона времени в тексте
Добрый день есть текст в нем встречается время или диапазон времени в таком виде текст в 23 часа.
Суммирование времени
Задача. Есть таблица альбом(Название), таблица Трек(название и время звучания, код альбома).Нужно.
Суммирование времени
Добрый вечер! Посмотрите, пожалуйста, в “запрос №2” там я сделал разбитие времени на часы в.
Суммирование времени в столбце
Добрый день! Есть детализация счета где указано время в столбце вида: 0:34 (ноль минут, 34 секунды).
SLameN, Документация PHP гласит «strtotime — Преобразует текстовое представление даты на английском языке в метку времени Unix», т.е. в Вашем случае
var_dump(strtotime('00:01')); //1452805260
Т.е. она выведет, текущее время в метку времени Unix. А Вам надо считать секунды, т.е. можно допустим конкретный элемент массива разбить построчно (explode) например и уже конкретно считать часы, минуты, секунды — в зависимости от количества полученных элементов.
Сообщение от SLameN
Сообщение было отмечено SLameN как решение
Решение
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
$arr = array('01:51', '00:07', '00:44', '04:17'); // массив времен. Точное число не известно function getTime($arr) { $temp_value = null; $seconds = 0; $minutes = 0; foreach ($arr as $value) { $temp_value = explode(':', $value); $minutes += $temp_value[0]; $seconds += $temp_value[1]; } while ($seconds >= 60) { $minutes++; $seconds -= 60; } $res_time = str_pad($minutes, 2, 0, STR_PAD_LEFT) . ':' . str_pad($seconds, 2, 0, STR_PAD_LEFT); return $res_time; } echo getTime($arr);
сложение времени,к примеру 18-55 + 15минут= 19-10,а не 18-70
Доброго времени суток.
Я новичок в изучении PHP и поэтому сильно не пинайте если буду задавать очень глупые вопросы.
В общем задача: есть расписание транспортных средств (автобусов) по городу. В расписание включено время отправления и время прибытия автобусов. Так же время по минутам для каждой остановки по маршруту следования заданного автобуса.
Автобус №1 Вокзал-Западный.
Прибытия на остановки:
Вокзал-0
Третья школа-5
Ул. Чкалова-10
Ул. Карповича-15
Западный-20
Расписание:
8-00, 12-25, 15-40, 18-55, 20-50
№1 Западный-Вокзал.
Прибытия на остановки:
Западный-0
Ул. Карповича-5
Ул. Чкалова-10
Третья школа-15
Вокзал-20
Расписание:
8-30, 13-00, 15-55, 19-30, 21-20
И необходимо сделать так когда нажимаешь на определённую остановку (к примеру «Третья школа»( Вокзал-Западный), то там, где расписание заданного маршрута в заданном направлении приплюсовывалось время и уже было не стандартное время, а изменённое – то есть не 8-00, а 8-05, не 18-55, а 19-00, ну и так далее по всему расписанию, и когда нажимаешь на другую остановку то время так же менялось и прибавлялось к изначальному времени время остановки, а при нажатии на первую (то есть начальную остановку) расписание времени переходило в начальные данные).
Нужно ли использовать базы данных или же лучше хранить все данные в php файле?
Как сделать так чтобы когда минуты переваливают за отметку 59, то они обнулялись, и прибавлялся ещё час ко времени, ну, то есть не 18-60, а 19-00. И тоже самое с часами, когда переваливает за отметку 23 часа, то обнулялись до 00, вместо 24).
И можно ли полностью подробно хотя бы на данном примере описать и рассказать как что делать с самого нуля?
П.с. просто хочу в своём городе сделать сайт с расписанием всего городского и пригородного транспорта, чтобы было удобней жителям города.
Заранее спасибо за помощь.