2013-10-13 3 views
-1

Этот код работает нормально до вчерашнего дня:PHP StrToTime странное поведение

$fechaactual = strtotime('now'); 

$timestamp = strtotime($v->startDate); 

$pelo = date("d/m G:i:s",$fechaactual); 
$pelo2 = date("m/d G:i:s",$timestamp); 

$timestamp = strtotime($pelo2); 
$timestamp2 = strtotime($pelo); 

Теперь $ timestamp2 всегда пусто. Я не понимаю. Зачем?

ответ

1

Вы пытаетесь использовать strtotime() несколько раз.

Проблема может быть воспроизведен на код ниже:

$fechaactual = strtotime('now'); 
$pelo = date("d/m G:i:s",$fechaactual); 
$timestamp2 = strtotime($pelo); 
var_dump($timestamp2); 

Выходы:

bool(false) 

$fechaactual будет содержать метку времени для текущего времени, а также с помощью date(), вы преобразуя timestamp в читаемом формате. Позже вы пытаетесь использовать strtotime() в новой строке даты, но strtotime() не понимает этот формат и возвращает FALSE.

strtotime() понимает форматы, перечисленные на этой странице: http://php.net/manual/en/datetime.formats.date.php

Если вы хотите, чтобы разобрать строку даты с помощью пользовательского формата, то лучше использовать DateTime::createFromFormat() вместо:

+1

Ошибка более тонкая. 'strtotime()' вернет отметку времени до 12 октября, так как она увидела '12/10', и интерпретировала это как 10 декабря. 13 октября strtotime увидела '13/10', который он больше не может интерпретировать (месяц 13 недействителен) и возвращает' false' –

0

100% не об этом, но тот факт, он работал до вчерашнего дня, может означать его форматирование.

Сегодня 13/10/2013 в формате UK. В США, который будет равен 10-му дню 13-го месяца, который не является действительной датой ... Вчера приравнивался бы к 10-му дню 12-го месяца, который был бы действительной датой, но не ожидаемой датой.

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