На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

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


В базе данных на самописной 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 – за относительно небольшие деньги я вам с удовольствием помогу.






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





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




Добавляем функционал избранное к опенкарт
С. Визгорев - AI Factory's Chess, уровень 8, 18 октября 2015


© upread.ru 2013-2019
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.