Моя переменная содержит следующее значение.
$value = 20151205
Я хочу разобрать год, месяц и дату из этого значения.
[2015,12,05]
Как я могу сделать это в php?
Этот формат будет зафиксирован как первые 4 цифры для года, затем 2 цифры для месяца и так же для даты.
Вы можете попробовать строковую операцию: —
<?php
$str1='20151205';
$str1=substr_replace($str1, '/', 4, 0);
$str1=substr_replace($str1, '/', 7, 0);
print_r (explode("/",$str1));
?>
$value = 20151205;
$dto = new \DateTime($value);
$newValue = "[" . $dto->format('Y') . "," . $dto->format('m'). "," . $dto->format('d') . ']';
echo $newValue;
Использовать date_parse
$arrDateParse = date_parse("20151205");
вы получите массив, как это
Array
(
[year] => 2015
[month] => 12
[day] => 5
[hour] =>
[minute] =>
[second] =>
[fraction] =>
[warning_count] => 0
[warnings] => Array
(
)
[error_count] => 0
[errors] => Array
(
)
[is_localtime] =>
)
$value = "[" . $arrDateParse['year'] . "," . $arrDateParse['month']. "," . $arrDateParse['day'] . ']';
Просто хотел дать другую возможность (другие ответы в этой теме также работают);
$date = date("[Y,m,d]", strtotime('20151205'));
Смотрите также:
http://php.net/manual/en/datetime.formats.date.php (форматы даты, которые работают с strtotime ())
http://php.net/manual/en/function.date.php (функция даты)
подход preg_replace (regex):
$value = 20151205;
$parsed = preg_replace('/^([\d]{4})([\d]{2})([\d]{2})$/', '[$1,$2,$3]', $value);
попробуй этот код
$int="20151205";
$day = substr($int,-1,2);
$month = substr($int,-4,2);
$year = substr($int,0,4);
echo $date = $day.'/'.$month.'/'.$year;
Я думаю, что лучшее решение — отформатировать переменную как дату
try {
$value = (new DateTime($value))->format('\[Y\,m\,d\]');
}
catch (Exception $ex) {
echo '$Value is not a date value';
}
Заключите код в блок Try / Catch, чтобы определить, не соответствует ли значение в переменной дате.