Поэтому у меня есть эта функция в моем 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() , но у меня нет персонажа, с которым можно разделить.
Легкий способ сделать это;
$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» в виде строки, вам было бы намного лучше начать позицию, чтобы выполнить желаемый результат.