Как извлечь только значение "День" из полной строки "Дата"?
У меня есть массив значений Date в формате 'Y-m-d'
. Я хочу перебрать массив и извлечь только день ('d'
) каждого члена, но не могу понять, как его разделить. Я каким-то образом использую подстроки?
Проще говоря, у меня есть '2010-11-24'
, и я хочу получить от него только '24'
. Проблема в том, что день может быть как одиночными, так и двойными.
Ответы
Ответ 1
Если у вас есть PHP < 5.3, используйте strtotime()
:
$string = "2010-11-24";
$timestamp = strtotime($string);
echo date("d", $timestamp);
Если у вас есть PHP >= 5.3, используйте решение на основе DateTime
, используя createFromFormat - DateTime
- это будущее и может иметь дело с датами, превышающими 1900 и 2038:
$string = "2010-11-24";
$date = DateTime::createFromFormat("Y-m-d", $string);
echo $date->format("d");
Ответ 2
$date = '2010-11-24';
list($y, $m, $d) = explode('-', $date);
Демо, docs на explode()
.
Или даже
$date = '2010-11-24';
$d = substr($date, strrpos($date, '-') + 1);
Демо, docs на substr()
и strrpos()
.
Отказ от ответственности: оба являются oldschool!
Ответ 3
php> $d = '2010-11-24';
'2010-11-24'
php> $fields = explode('-', $d);
array (
0 => '2010',
1 => '11',
2 => '24',
)
php> $fields[2];
'24'
Ответ 4
<?php
$dates = array('2010-01-01', '2010-01-02', '2010-01-03', '2010-01-23');
foreach ($dates as $date) {
$day[] = substr($date, 8, 2);
}
var_dump($day);
?>
Ответ 5
$string = "2010-11-24";
$date = new DateTime($string);
echo date_format($date, 'd');
Ответ 6
Попробуйте использовать date_parse_from_format
, например:
date_parse_from_format('Y-m-d', '2010-11-24')['day'];
Тестирование в оболочке:
$ php -r "echo date_parse_from_format('Y-m-d', '2010-11-24')['day'];"
24