Преобразование 8-значного целого числа в dd / mm / yyyy

Поэтому у меня есть эта функция в моем PHP-скрипте, который должен принять дату в виде 8-значного целого числа, такого как 01042012 и преобразовать его в 01/04/2012 для отображения.

В настоящее время я пытаюсь использовать функцию date() php следующим образом:

 $int = 01042012; $date = date("d/m/Y", $int); 

Вместо $date имеющего значение 01/04/2012 он отображается как 13/01/1970 .

Это потому, что date() хочет, чтобы дата, которую я передал ей, была в unix time? Если это так, возможно, был бы более прямой способ разбить int после символов 2 и 4 и просто вставить косые черты, а затем перекомпилировать его? Подобно тому, что делает explode() , но у меня нет персонажа, с которым можно разделить.

Solutions Collecting From Web of "Преобразование 8-значного целого числа в dd / mm / yyyy"

Легкий способ сделать это;

 $int = 01042012; $day = substr($int,0,2); $month = substr($int,2,4); $year = substr($int,4); $date = $day.'/'.$month.'/'.$year; 

Используйте метод DateTime::createFromFormat() , который возвращает новый объект DateTime отформатированный в соответствии с указанным форматом:

 $dt = DateTime::createFromFormat('dmY', '01042012'); echo $dt->format('d/m/Y'); 

В принципе, вы начинаете с значения int, а значение int 01042012 действительно будет 1042012, поскольку начальный нуль не имеет значения как int. Если вы начали с «01042012» в виде строки, вам было бы намного лучше начать позицию, чтобы выполнить желаемый результат.