Выделить дату, месяц и год из строки

310
28 марта 2017, 14:22

В общем ситуация такая: есть переменная и в ней дата вида 27-03-17

$Date_user = preg_replace("/[^0-9-]/i", "", $_POST['Date_user']);

Пытаюсь уже дня два разбить дату и к числу, месяцу и году присвоить свою переменную для внесения в базу, что бы потом проводить разные манипуляции.

Пробовал через вот такие примеры с сайтов да и ещё кучу всего городил:

$rest = substr("abcdef", 1);
$rest = substr("abcdef", 1, 3);
$rest = substr("abcdef", 0, 4);
$rest = substr("abcdef", 0, 8);

или

$string = 'abcdef';
echo $string{0};
echo $string{3};

Но как итог получалось внести во все три только первое число до знака "-".

Подскажите хотя бы в какую сторону копать. Спасибо!

Answer 1

Есть несколько вариантов.

Правильнее: (Нужно использовать функции работы со временем)

<?php 
    // http://php.net/manual/en/datetime.createfromformat.php
    $input = "27-03-17";
    $date = DateTime::createFromFormat('d-m-y', $input);
    var_dump($date->format('d'));
    var_dump($date->format('m'));
    var_dump($date->format('y'));

Самый простой:

<?php
    $date = "27-03-17";
    list($day, $month, $year) = explode("-", $date);
    var_dump($day, $month, $year);

Сложнее:

<?php 
    $date = '27-03-17';
    preg_match('/(?P<day>\d+)-(?P<month>\d+)-(?P<year>\d+)/', $date, $matches);
    var_dump($matches['day'], $matches['month'], $matches['year']);
Answer 2

Правильный способ:

$input = '27-03-17';
$date = DateTime::createFromFormat('d-m-y', $input);
echo $date->format('d')."\n"; // 27
echo $date->format('m')."\n"; // 03
echo $date->format('Y')."\n"; // 2017
echo $date->format('Y-m-d')."\n"; // 2017-03-27
Answer 3

Ну и окончательно правильный ответ, учитывая

присвоить свою переменную для внесения в базу

$input = '27-03-17';
$date = DateTime::createFromFormat('d-m-y', $input)->format("Y-m-d");
// 2017-03-27
READ ALSO
Как парсить ошибки, которые получил CURL

Как парсить ошибки, которые получил CURL

Например, я делаю какой-то запрос при помощи cURL в PHP, но запрос получает от сервера какую-то определённую ошибкуНапример, 403

299
Есть ли аналог str2func из Matlab в C++?

Есть ли аналог str2func из Matlab в C++?

Понадобилось портировать проект с Matlab в С++, а там парсится ввод пользователя, который становится вычислимой функциейЕсть ли какой-либо аналог...

290
Подсчёт символов в строке

Подсчёт символов в строке

У меня меня есть строка, в которой могут быть символы как английского, так и русского алфавитов, и мне не вполне понятно, как посчитать в такой...

243
Задача по C++. Классы [требует правки]

Задача по C++. Классы [требует правки]

Задание :Создать класс согласно своему вариантуКласс должен содержать конструктор с умолчанием, конструктор с параметрами, методы чтения...

298