Подтвердить что ты не робот

Как извлечь только значение "День" из полной строки "Дата"?

У меня есть массив значений Date в формате 'Y-m-d'. Я хочу перебрать массив и извлечь только день ('d') каждого члена, но не могу понять, как его разделить. Я каким-то образом использую подстроки?

Проще говоря, у меня есть '2010-11-24', и я хочу получить от него только '24'. Проблема в том, что день может быть как одиночными, так и двойными.

4b9b3361

Ответ 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