Преобразование времени в секундах

Какой лучший способ конвертировать 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")) { .. } 

Это не будет работать.

Для преобразования функции:

 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']; } 

Запись на лету, не проверена 😛

поэтому вы можете использовать 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. 

и т.д..

PHP5.3

 $formattedTime = '00:01:38'; $seconds = strtotime('1970-01-01 ' . $formattedTime . 'GMT') 

Кажется, вы просите противоречия.

  • Вы хотите преобразовать время в HH:MM в секунды.
  • Но тогда вы хотите «сравнить» результат с разных времен, как если бы у них были привязанные даты.

Если вы хотите разрешить HourMinuteToDecimal("01:30") > HourMinuteToDecimal("23:30") быть истинным без даты, то, ну, любое сравнение вернет true .

Если вы хотите сделать это правильно, strtotime дату ( YYYY-MM-DD HH:MM:SS ) и используйте strtotime в PHP, чтобы получить количество секунд с момента UNIX.


Кроме того, ваша функция возвращает минуты, а не секунды.

Вы можете сравнивать объекты типа time с помощью стандартных операторов < , > , == . Используйте strtotime для преобразования строки во времени, а затем сравните.