Меню Закрыть

Php datetime сравнение дат

Содержание

Цель состоит в том, чтобы различать две даты.

У меня есть объект DateTime, хранящийся в моей таблице базы данных в столбце метки времени. Я использую Doctrine, чтобы получить дату, Однажды получив дату из моей базы данных, это выглядело так: var_dump ;

найденный объект был назначен $result переменная сейчас, чтобы добраться до DateTime объект, который я сделал это $result[0][timestamp] ,

Чтобы получить фактические данные, я сделал это $date1 = $result->format(‘Y-m-d H:i:s’); согласно этому документация

Итак, теперь, когда я получил дату, когда в мою базу данных была вставлена ​​строка, мне нужна другая дата на текущий момент времени.

в соответствии с этим документация

это дает мне эту ошибку:

Любая идея, почему я получаю это сообщение об ошибке, выглядит так, будто я делаю все правильно в соответствии с доками. Может быть, есть другой способ сделать разницу двух дат OPP.

ОБНОВИТЬ:

Хорошо, да, это правда, если я использую $date1 = $result->format(‘Y-m-d H:i:s’); его больше не объект, это помешательство.

Итак, теперь мой код выглядит так:

$ test = $ result-> diff (new DateTime ());
var_dump ($ тест);

он возвращает объект DateInterval, но что мне из него сделать:

Что мне нужно, если от Date1 до Date2> 30 минут, я хочу предпринять некоторые действия.

Решение

Это потому что формат метода возвращает строку, но не объект. Попробуй использовать:

Другие решения

$date1 теперь строка, которая не имеет метода format ().

Попробуйте это вместо: —

После того как вы $date1 = $result->format(‘Y-m-d H:i:s’); , $date1 больше не DateTime объект, а скорее строковое представление даты и времени.

Следовательно, пропустите эту строку. Не форматируйте, а затем проверьте на разницу. Это даст вам DateTimeInterval объект.

Читайте также:  Ij network tool canon windows 7

Для тех, кто не знает, что делает diff (), он сравнивает две даты и возвращает разницу — но вряд ли другие методы вычитания, diff () никогда не возвращает отрицательное значение. Неважно, будет ли первая дата больше или меньше второй даты.

Теперь, если это не относится к этому случаю, следующим шагом будет доступ к необходимым значениям в объекте DateInterval.

Начиная с версии 5.2 в PHP появился такой тип данных как DateTime. Попробуем в этой статье разобраться почему лучше использовать его вместо старых функций date() и time().

Функция date() используется для строкового отображения даты/времени. Функция принимает два параметра, 1-ый — формат возвращаемой строки, а второй — само значение даты. По умолчанию второй параметр принимает значение текущего момента времени, либо можно указать отметку времени в unix формате (timestamp).

Функция time() возвращает текущее время в unix формате (timestamp).

Datetime()

Объект Datetime впервые был представлен в PHP версии 5.2, он содержит в себе множество вспомогательных объектов, для решения проблем, с которыми вам приходилось сталкиваться при использовании функций date() и time(). Также был представлен объект DateTimeZone, который управляет часовым поясом, объект DateInterval соответствует интервалу времени (например 2 дня) от настоящего момента, DatePeriod показывает разницу во времени между двумя разными датами. Основное преимущество использования DateTime перед старыми функциями заключается в том, что значения дат проще изменять. Если вы хотите получить значение времени и даты при помощи функции date(), то вы напишите следующее:

А вот пример для установки часового пояса:

Проблема возникает при необходимости изменить или сравнить две отметки времени, DateTime имеет методы modify() и diff() упрощающие задачу. Преимущества DateTime проявляются когда вы манипулируете значениями дат.

Читайте также:  Чем открыть mtf тест

Сначала объект надо инициализировать

Конструктор этого класса принимает два параметра. Первый — значение времени, вы можете использовать строку в формате функции date, время в формате Unix, интервал или период. Второй параметр — часовой пояс.

Вывод форматированной даты

Объект DateTime может работать также как и функция date, всего лишь необходимо вызвать метод format() указав формат возвращаемой строки.

Вывод отметки времени (timestamp)

Для вывода отметки времени в формате Unix существует метод getTimestamp() .

Изменение времени

Для изменения значения времени существует метод setTime() .

Изменение метки timestamp

Для этого придуман метод setTimestamp() .

Установка часового пояса

Второй параметр при создании объекта — DateTimeZone, он позволяет назначить часовой пояс нашему объекту. Это означает, что мы сможем легко сравнивать два значения времени из разных часовых поясов и получать корректную разницу.

Также для установки этого значения существует метод setTimezone() .

Полный список часовых поясов можно просмотреть на php.net.

Как добавить дни к значению даты

Для изменения значения даты в объекте DateTime можно использовать метод modify(). Он принимает в качестве параметра строковое значение дней, месяцев, года. Например, если хотите прибавить несколько дней, например 3 дня, один месяц и один год:

Сравнение двух дат

Код выше даст нам разницу двух дат в виде DateInterval.

Конвертация номера месяца и имени месяца

Довольно часто приходится получать имя месяца из его порядкового номера, для этого всего лишь нужно указать формат “F” в качестве первого параметра

При использовании класса DateTime можно применить метод format() .

Получаем количество недель в месяце

Следующий пример поможет вам получить количество недель в определенном месяце года.

(PHP 5 >= 5.3.0, PHP 7)

DateTime::diff — DateTimeImmutable::diff — DateTimeInterface::diff — date_diff — Возвращает разницу между двумя DateTime объектами

Читайте также:  Как восстановить адресную строку

Описание

Возвращает разницу между двумя DateTimeInterface объектами.

Список параметров

Дата и время для сравнения.

Используется, чтобы вернуть абсолютную разницу.

Возвращаемые значения

DateInterval объект представляет разницу между двумя датами или FALSE в случае возникновения ошибки.

Примеры

Пример #1 Пример использования DateTime::diff()

Результат выполнения данных примеров:

Пример #2 Сравнение объектов DateTime

В PHP 5.2.2 объекты DateTime сравнивались при помощи операторов сравнения.

= new DateTime ( "now" );
$date2 = new DateTime ( "tomorrow" );

var_dump ( $date1 == $date2 );
var_dump ( $date1 $date2 );
var_dump ( $date1 > $date2 );
?>

Рекомендуем к прочтению

Добавить комментарий

Ваш адрес email не будет опубликован.