Конвертировать время в секунды - PullRequest
10 голосов
/ 18 мая 2011

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

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

Ответы [ 4 ]

10 голосов
/ 09 января 2013

PHP5.3

$formattedTime = '00:01:38';
$seconds = strtotime('1970-01-01 ' . $formattedTime . 'GMT')
6 голосов
/ 19 мая 2011

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

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 и сравнения с помощьюстандартные операторы (== <>> = <=! = и т. д.), например: </p>

$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.

и т. д.

4 голосов
/ 18 мая 2011

Вы, кажется, спрашиваете противоречивые вещи.

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

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

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


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

0 голосов
/ 18 мая 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...