Как извлечь значения даты в формате y-m-d?

Предположим, у меня есть эта дата: 2016-07-27. Чего я хочу добиться, так это:

$year = 2016;
$month = 07;
$day = 27;

Что я пробовал:

  • $year = preg_match("/^[^-]*/", "2016-07-27");
    Он возвращает: 1
  • $month = preg_match("(?<=\-)(.*?)(?=\-)", "2016-07-27");
    Он возвращает: Warning: preg_match(): Unknown modifier '('
  • $year = ???

Как я могу извлечь числа между тире и сохранить их в переменных ниже, как показано выше?


person Angel Politis    schedule 02.07.2016    source источник
comment
это потому, что preg_match возвращает 1, если шаблон соответствует, и 0, если нет . Вы уже искали сообщения Google или SO с вашей проблемой?   -  person swlim    schedule 02.07.2016
comment
Как получить год и месяц по дате - PHP && Разделить строку с датой && Как разбить дату (17.08.2011) на месяц, день, год? (Некоторые могут быть не точными дубликатами, но они конечно поможет) @JohnConde   -  person FirstOne    schedule 02.07.2016


Ответы (2)


Если это строка, которая не изменит свой формат, вы можете просто сделать это:

$date = '2016-07-27';
list($year, $month, $day) = explode('-', $date);

echo $year; // 2016
echo $month; // 07
echo $day; // 27

Однако, если формат даты изменится, вам следует использовать date_parse или другие методы DateTime.

person aborted    schedule 02.07.2016
comment
Хороший ответ. Я собираюсь принять его, потому что он короче и также сохраняет 0 в начале. - person Angel Politis; 02.07.2016

Не изобретайте велосипед — date_parse сделает всю тяжелую работу для ты:

$parsed = date_parse('2016-07-27');
$year = $parsed['year'];
$month = $parsed['month'];
$day = $parsed['day'];
person Mureinik    schedule 02.07.2016
comment
Спасибо @ Fred-ii-. Пропустил тот. - person Mureinik; 02.07.2016
comment
@Mureinik Я не знал, что эта функция существует. Спасибо, что указали на это. - person Angel Politis; 02.07.2016