2015-10-01 5 views
1

Я разрабатываю модуль в php, где я должен управлять разницами во времени и действовать с определенной разницей времени. Я получаю значение из базы данных ($ end_date), которое содержит время.Сравнение времени в выражении IF PHP

$end_date = $result['end_date']; 

получать время сервера от

$date = $this->GetServerTime(); 

получать разницу во времени между этими двумя

$diffrence = date("Y-m-d H:i:s",strtotime("$date - $end_date")); 

сейчас, мне нужно проверить, если разница во времени составляет менее 15 секунд, через если заявление. мой подход:

$to_time = strtotime("0000-00-00 00:00:15"); 
      if ($difference < $to_time) 
      { 
      echo "here"; 

      } 

но я верю, что я ничего не делаю правильно, как еще я должен это сравнить? Я сделал много исследований, но безрезультатно, любая помощь приветствуется.

+0

Ну, во-первых вашей 'переменной $ difference' является строка ищет что-то вроде' 2015-10-01', пока ваш '$ to_time' переменная выглядит это '144112331'. Таким образом, их сравнение не будет работать. – Epodax

+0

любое предложение? –

+0

Эпокакс прав. Это не сработает. Что об этом: Как я понимаю, 'strtotime' возвращает отметки времени в секундах. Не будет просто преобразовывать дату сервера ($ date) и выбранную дату ($ end_date) как к отметкам времени, а затем просто вычесть их, даст вам разницу в секундах? –

ответ

1

Всякий раз, когда я должен сделать что-то подобное, я просто вычислить с временными метками (которые в секундах).

$end_date = strtotime($result['end_date']); # timestamp in s 
$date  = strtotime($this->GetServerTime()); # timestamp in s 

if ($date - $enddate > 15) { 
    echo "Here"; 
} 

Для минут и часов вы можете умножить эти времена легко с 60.

if ($date - $enddate > (15*60)) { # 15 minutes 
    echo "Here"; 
} 

Я не совсем уверен, что это будет работать в летнее время, но оно должно быть достаточно для большинства случаев использования.

Oh, btw: Это действительно полезно, если вам нужно сравнить с текущим временем, так как time() возвращает метку времени за считанные секунды.

3

Один из способов сделать это можно было бы использовать что-то вроде этого

$to_time = strtotime("2008-12-13 10:42:00"); 
$from_time = strtotime("2008-12-13 10:21:00"); 
$difference = $to_time - $from_time; 

if($difference > 15){ 
    <CODE> 
} 

А для тех, кто использует другой формат даты/времени, чем выше, можно использовать что-то вроде кода ниже, вы можете использовать date() функция-х параметры для указания формата даты.

$dateFormat = "d/m/Y H:i:s"; 
$tmp_to_time = date_create_from_format($dateFormat,"25/08/2015 10:45:12"); 
$tmp_from_time = date_create_from_format($dateFormat,"25/08/2015 10:34:15"); 

$to_time = strtotime(date_format($tmp_to_time , $dateFormat)) 
$from_time = strtotime(date_format($tmp_from_time , $dateFormat)) 
$difference = $to_time - $from_time; 

if($difference > 15){ 
    <CODE> 
} 

вдохновение и основная часть кода находится из here

+0

Не нужно крутить. –

+0

Исправлено @SalmanA - Спасибо за головы :) – Epodax

0

Вот как это можно сделать:

$end_date = strtotime($result['end_date']); 
$date  = strtotime($this->GetServerTime()); 
$difference = $date-$end_date; 
$sec = strtotime(15); 
if ($difference < $sec){ 
    echo "here"; 
} 
Смежные вопросы