Преобразование времени в секундах
Какой лучший способ конвертировать 24 часа в секунду, чтобы его можно было использовать для сравнения, если оператор..
function HourMinuteToDecimal($hour_minute) {
$t = explode(':', $hour_minute);
return $t[0] * 60 + $t[1];
}
echo HourMinuteToDecimal("23:30");
return 1410
Если вы попытаетесь преобразовать полночное время (00:00) в секунды, это не сработает. Каково решение этого?
00:00, 00:30, 01:00, 01:30 и т.д.
if (HourMinuteToDecimal("01:30") > HourMinuteToDecimal("23:30")) { .. }
Это не сработает.
Ответы
Ответ 1
Для преобразования функции:
function hoursToSecods ($hour) { // $hour must be a string type: "HH:mm:ss"
$parse = array();
if (!preg_match ('#^(?<hours>[\d]{2}):(?<mins>[\d]{2}):(?<secs>[\d]{2})$#',$hour,$parse)) {
// Throw error, exception, etc
throw new RuntimeException ("Hour Format not valid");
}
return (int) $parse['hours'] * 3600 + (int) $parse['mins'] * 60 + (int) $parse['secs'];
}
Пишите на лету, не тестировали:-P
поэтому вы можете использовать strtotime для преобразования даты формата в unix timestamp и comparte с использованием стандартных операторов (== < → = < =!= и т.д.) ex:
$t1 = "23:40:12";
$t2 = "17:53:04";
$h1 = strtotime("0000-00-00 $t1");
$h2 = strtotime("0000-00-00 $t2");
$h1 == $h2; // if are equals
$h1 > $h2; // if h1 is mayor at h2
$h1-$h2; // dieference in seconds, etc.
и т.д..
Ответ 2
PHP5.3
$formattedTime = '00:01:38';
$seconds = strtotime('1970-01-01 ' . $formattedTime . 'GMT')
Ответ 3
Вы, кажется, задаете противоречивые вещи.
- Вы хотите преобразовать время в
HH:MM
в секунды.
- Но тогда вы хотите "сравнить" результат с разных времен, как если бы у них были привязанные даты.
Если вы хотите разрешить HourMinuteToDecimal("01:30") > HourMinuteToDecimal("23:30")
быть истинным без даты, то, ну, любое сравнение вернет true
.
Если вы хотите сделать это правильно, укажите дату (YYYY-MM-DD HH:MM:SS
) и используйте strtotime
в PHP, чтобы получить количество секунд с эпохи UNIX.
Кроме того, ваша функция возвращает минуты, а не секунды.
Ответ 4
Вы можете сравнивать объекты типа time
с помощью стандартных операторов <
, >
, ==
. Используйте strtotime
, чтобы преобразовать строку во времени, а затем сравните.