2013-03-24 2 views
1

У меня проблема с двумя временными метками unix в php.PHP, сравнивающий отметки времени UNIX

$time_now = mktime(); 
if($auction->time_end > $time_now){ 
    //true 
} 
else{ 
    //false 
} 

$ auction-> time_end is 1362579127 и устанавливается как int from db. $ time_now, например, 1364129253 и устанавливается как int, оба проверяли с помощью var_dump и действительно возвращались как int.

Проблема в том, что PHP, кажется, думает, что 1362579127 больше, чем 1364129253 (возвращает false), которого нет. Я что-то упустил? Если я ввожу значения в оператор if, он работает так, как должен, но когда он сравнивает объект, ему это, похоже, не нравится.

+1

вы можете сделать 'var_dump' из' $ time_now' и '$ аукциона> time_end' непосредственно перед' if' заявление, и показать точные результаты здесь? и вы уверены, что у вас нет какой-либо орфографической ошибки или нет, можете ли вы показать копию/вставленный код? –

+1

Дамп варна объекта int (1362579127) и mktime int (1364130453) –

ответ

1

Рассматривая ваш вопрос, кажется, что у вас есть логика неправильного пути. Текущее время всегда больше времени, чем в прошлом. Попробуйте следующее:

if($time_now>$auction->time_end){ 
//... 
} 
+1

о боже .. поздно ночью кодирование на нем лучше. –

0

Максимальное значение типа int составляет около 2 миллиардов, если вы используете 32-битную систему. Оба ваших номера кажутся слишком большими. См. Documentation.

+1

http://codepad.org/BFWIhiiu – Antony

+4

@Sotapanna - справедливый вопрос, но я не думаю, что это проблема - в той же документации указано, что если интерпретатор * "встречает число за пределами целочисленного типа, оно будет интерпретироваться как float вместо этого." *, поэтому он не должен влиять на сравнение? – Emissary

+0

@Emissary, правда. Но иметь дело с такими большими цифрами, кажется, вызывает проблемы, если вы не обращаете на него пристального внимания. Я бы рекомендовал использовать библиотеку BCMath для таких операций. http://php.net/manual/en/book.bc.php – stpn108

Смежные вопросы