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