PHP Форматирование datetime в формат 8607 yyyy-MM-ddThh:mmssZ из MySQL

191
23 апреля 2022, 23:50

подскажите пожалуйста, есть база данных на mysql, в ней дата записывается в формате yyyy-MM-dd hh:mm:ss, мне нужно вывести ее в json преобразованной в формат 2020-09-28T12:00:00Z код:

function ID_Bid_Select($api_data) //Поиск по ID
{
    // Декомпиляция присланого кода
    $bid_data = json_decode($api_data);
    // выполняем запрос // Делаем проверку
    $r = mysql_query("SELECT * FROM `app` WHERE ID = '$b_data->ID'") or die(mysql_error());
    $data = array();
    if (mysql_num_rows($r) > 0) 
    {
    while($row=mysql_fetch_assoc($r))
    {
        // заносим данные в массив (где то тут должно быть изменение вывода одного из столбцов БД с "2020-09-28 12:00:00" на "2020-09-28T12:00:00Z"
        $data = $row;
    }
    API_Response(false, '', json_encode($data, JSON_UNESCAPED_UNICODE));
    }
    else
    {
        // Не успешно
        API_Response(true, 'FAIL');
    }
}
Answer 1

Если я правильно понял, то Вам нужен именно стандарт ISO8601, который принимает вид c буквами T - как разделитель даты и времени, и Z как индекс смещения временной зоны.
Добавил комментарии для понимания.

function ID_Bid_Select($api_data) //Поиск по ID
{
    // Декомпиляция присланого кода
    $bid_data = json_decode($api_data);
    // выполняем запрос // Делаем проверку
    $r = mysql_query("SELECT * FROM `app` WHERE ID = '$b_data->ID'") or die(mysql_error());
    $data = array();
    if (mysql_num_rows($r) > 0)
    {
        while($row=mysql_fetch_assoc($r))
        {
            // заносим данные в массив (где то тут должно быть изменение вывода одного из столбцов БД с "2020-09-28 12:00:00" на "2020-09-28T12:00:00Z"
            $time = $row['Название столбца с датой'];
            $datetime = new DateTime($time);
            $c = $datetime->format(DateTime::ISO8601); // Переводим в формат ISO 8601
            // Z - фокус смещения
            // Либо делать костыли из разряда:
            $c = str_replace(' ', 'T', $time).'Z'; // Меняем вручную
            $row['Название столбца с датой'] = $c; // Заменяем значение в массиве $data
            $data = $row; // Записываем в data массив уже с измененными значениями.
        }
        API_Response(false, '', json_encode($data, JSON_UNESCAPED_UNICODE));
    }
    else
    {
        // Не успешно
        API_Response(true, 'FAIL');
    }
}
Answer 2

где ты этот доисторический код откопал? используй PDO, а по теме вопроса,

1)записывай в БД метку времени  time();
2)выводи из БД echo date("Y-m-d h:i:s a", метка времени из БД);

Y-m-d h:i:s a - формат может быть на любой вкус

READ ALSO
Как разместить/подключить Мускулы на GitHub?

Как разместить/подключить Мускулы на GitHub?

Есть сайт-портфолио с разными моими проектамиБольшая часть из них сделана от балды(т

185
Построение связей между 3 таблицами

Построение связей между 3 таблицами

Есть 3 таблицыРаздел, Тип, Продукт

236
org.hibernate.exception.SQLGrammarException: could not execute statement

org.hibernate.exception.SQLGrammarException: could not execute statement

у меня возникла такая ошибка когда я пытаюсь записать данные в бд

260
Подсчитать количество записей по дереву подкатегорий

Подсчитать количество записей по дереву подкатегорий

Подскажите пожалуйста, есть 2 таблицы:

206