Перевод даты в универсальную форму


В базе данных на самописной CMS у одного заказчика даты хранились в оригинальном виде, текстовом. Вот так: «22 апреля 2019», «05 марта 2019» и так далее. Работать с подобными датами не очень просто, поэтому потребовалось привести их к стандартному виду. Зачем? Ну хотя бы затем, чтобы была возможность сортировать их по возрастанию/убыванию стандартными процедурами SQL. По большому счету нам надо только перевести названия месяцев в числа. Давайте разберемся с этим.

На самом деле все очень просто. Создаем два массива:

$mes_name  = array ("января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря");
$mes_number  = array ("01","02","03","04","05","06","07","08","09","10","11","12");
А потом их используем. К примеру, код ниже:

$query ="SELECT old_data FROM `table`";
if ($result = $conn->query($query)) {
while ($row = $result->fetch_assoc()){
$old_data = explode(" ", $row['old_data']);
$mes_old =  $old_data[1];
for ($i=0;$i<12;$i++) {
if ($mes_name[$i]==$mes_old) {
$mes_new = $mes_number[$i];
break;
}
$new_data = $old_data[0].".".$mes_new.".".$old_data[2];
echo $new_data;
}
}
}
Что он делает? А здесь мы делаем выборку старых дат с символьным кириллическим названием месяцев, а затем в цикле for сравниваем их с массивом $mes_name. При нахождении соответствия выходим из цикла и присваиваем переменной $mes_new двухцифровое значение месяца года.

Также используем функцию explode() для разбиения даты по пробелам – нам требуется только месяц. Ну а в конце выводим $new_data, в которую собираем старую и разделяем точками - с ней можно уже делать все, что угодно. То есть мы преобразовали такую дату «05 марта 2019» вот в такую «05.03.2019».

Дальше уже дату в этой форме можно переводить в timestamp, к примеру:

$new_data = "05.03.2019";
$timestamp = strtotime($new_data);
echo $timestamp;
Такой код выдаст 1551762000. Вот так просто можно сконвертировать дату. Напоминаю, что вы всегда можете написать мне по поводу работ с PHP или SQL – за относительно небольшие деньги я вам с удовольствием помогу.

Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегизаметки, php, дата




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Методы в C#
Программа "Оракул Хайяма" - предсказания с помощью рубаи
Обзор Java Date и Time API