Изменение моей метки времени SQL на d-m-Y в php

В своей базе данных я использую CURRENT_TIMESTAMP, чтобы отслеживать даты регистрации для моих новых пользователей. Теперь я хочу создать список пользователей, которые зарегистрировались за последние 7 или 30 дней. Я подумал, что это будет так просто, как описано в этой теме; Получите 30-дневную дату назад вместе со временем

Но мой текущий код дает неожиданный результат.

                for($i = 0; $i < $userlenght; $i++){
                    $comparedate = strtotime(date('Y-m-d', $user[$i]["date"]));
                    echo $comparedate . "<br/>";
                    if ($user[$i]["date"] > $last){
                        //do stuff here with the users who match.
                    }
                }

Это отображает значение $ compareate как "-3600", и я понятия не имею, почему.

Может ли кто-нибудь дать некоторое представление?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
46
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Метка времени SQL возвращается в формате строки, поэтому вам необходимо указать PHP, чтобы она считывала строку как значение в формате даты. Для этого вам нужно использовать strtotime().

Попробуйте следующее:

for($i = 0; $i < $userlenght; $i++){
       $comparedate = strtotime(date('Y-m-d', strtotime($user[$i]["date"])));
       echo $comparedate . "<br/>";
       if ($user[$i]["date"] > $last){
             //do stuff here with the users who match.
       }
}

Когда я фильтрую его с помощью двух функций "strtotime", он просто производит длинный список чисел. $comparedate = date('Y-m-d', strtotime($user[$i]["date"])); дал мне красиво отформатированную дату. Однако без вашего комментария я бы этого не понял, спасибо, Альберто!

Daniel de Ridder 14.09.2018 16:11

Ваша проблема в том, что $user[$i]['date'] - это временная метка MySQL, которая выглядит как 2018-09-14 11:09:10 и не является допустимым вводом для date. Вы можете просто удалить вызов date, и ваш код должен работать нормально:

$comparedate = strtotime($user[$i]["date"]);

Видите ли, ничего подобного не было упомянуто в других темах, которые я смог найти, но я решил, что проблема где-то там. Спасибо, Ник!

Daniel de Ridder 14.09.2018 16:10

Другие вопросы по теме