В общем ситуация такая: есть переменная и в ней дата вида 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};
Но как итог получалось внести во все три только первое число до знака "-".
Подскажите хотя бы в какую сторону копать. Спасибо!
Есть несколько вариантов.
Правильнее: (Нужно использовать функции работы со временем)
<?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']);
Правильный способ:
$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
Ну и окончательно правильный ответ, учитывая
присвоить свою переменную для внесения в базу
$input = '27-03-17';
$date = DateTime::createFromFormat('d-m-y', $input)->format("Y-m-d");
// 2017-03-27
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости