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

Сравнение дат в PHP с помощью функции StrToTime ()

Пример

Приведенный выше пример прекрасно подходит для отображения дат и времени. Но когда дело доходит до PHP сравнения дат, использовать удобные для чтения строки — не самый надежный способ. Намного эффективнее сравнить временные метки. Метка времени Unix содержит количество секунд между 1 января 1970 00:00:00 GMT и указанным временем. Это означает, что можно сравнивать даты вплоть до секунд.

Функция mktime() требует, чтобы дата и время были переданы ей в виде отдельных сегментов ( часы, минуты, секунды, месяц, день, год ):

В свою очередь функция strtotime() может преобразовать текстовое представление даты/времени в метку времени:

Если при PHP сравнении даты с текущей функция strtotime() получает дату/время, в которых день и месяц располагаются перед годом, эта запись будет интерпретироваться по-разному, в зависимости от используемого разделителя. При использовании косой черты в качестве разделителя функция возвратит метку времени в американском формате ( м/д/г ). При использовании в качестве разделителя тире или точки функция возвратит метку в европейском формате ( д-м-г ).

Как можно увидеть ниже, первая метка времени отличается от двух последних:

Важным преимуществом использования функции strtotime() является гибкость и простота, с которой можно добавить время или вычесть из него:

При сравнении двух дат в PHP внутри цикла while время ( в данном случае семь дней ) добавляется к дате начала и производится проверка, чтобы убедиться больше ли полученная временная метка, чем временная метка даты начала.

Пожалуйста, оставьте свои отзывы по текущей теме материала. За комментарии, лайки, подписки, дизлайки, отклики низкий вам поклон!

Источник

Как вычислить разницу между двумя датами с помощью PHP?

у меня есть две даты в виде:

теперь мне нужно найти разницу между этими двумя в следующей форме:

Как я могу это сделать в PHP?

30 ответов

вы можете использовать strtotime() для преобразования двух дат во время unix, а затем вычислить количество секунд между ними. Из этого довольно легко вычислить различные периоды времени.

Edit: очевидно, что предпочтительный способ сделать это, как описано ниже Юрка. Мой код обычно рекомендуется только если у вас нет PHP 5.3 или лучше.

несмотря на все это, я решил обращаться с жалобами. Если вам действительно нужен точный диапазон, но у вас нет доступа к PHP 5.3, используйте код ниже (он также должен работать в PHP 4). Это прямой порт кода, который PHP использует внутри для расчета диапазонов, за исключением того, что он не учитывает летнее время. Это означает, что он выключен максимум на час, но за исключением этого он должен быть правильным.

Я предлагаю использовать объекты DateTime и DateInterval.

начиная с PHP 5.2.2, объекты DateTime можно сравнивать с помощью операторов сравнения.

лучший курс действий-использование PHP DateTime DateInterval ) объекты. Каждая дата инкапсулируется в DateTime объект, а затем разница между ними может быть сделана:

на DateTime объект примет любой формат strtotime() будет. Если требуется еще более конкретный формат даты, DateTime::createFromFormat() можно использовать для создания DateTime объект.

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

$difference теперь DateInterval объект с информацией разницу. А var_dump() выглядит так:

в формате DateInterval объект, нам нужно проверить каждое значение и исключить его, если это 0:

просмотр часов и минут и секунд..

взгляните на следующую ссылку. Это лучший ответ, который я нашел до сих пор.. 🙂

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

имейте в виду, что количество дней между двумя датами не включительно. Так что, если вы ищете количество дней представлено всеми датами между и включая введенные даты, вам нужно будет добавить один (1) к результату этой функции.

Я голосовал за Юрка ‘ s ответ как это мой любимый, но у меня есть pre-php.5.3 версии.

я получил оригинальную идею от здесь, который я изменил для моего использования (и я надеюсь, что моя модификация будет отображаться на этой странице).

Я не знаю, используете ли вы фреймворк PHP или нет, но многие фреймворки PHP имеют библиотеки даты/времени и помощники, которые помогут вам не изобретать колесо.

Источник

Работа с датой и временем в PHP в ООП стиле. Часть 1

php datetime сравнение дат. Смотреть фото php datetime сравнение дат. Смотреть картинку php datetime сравнение дат. Картинка про php datetime сравнение дат. Фото php datetime сравнение дат

Перед web-разработчиками часто возникают задачи, в которых они должны работать с датой и временем. Если вы все еще используете PHP функции, такие как strtotime и date для работы с датой и временем в PHP, то вы многое упускаете.

PHP предоставляет специализированный класс DateTime для работы с датой и временем. Однако, многие игнорируют его использование, несмотря на то, что он доступен в PHP начиная с версии 5.2.

Вот несколько причин, почему предпочтительнее использовать класс DateTime вместо strtotime и date:

Создание объекта класса DateTime.

Создание объекта класса DateTime ничем не отличается от создания экземпляра какого-либо другого класса в PHP.

Если в конструктор класса DateTime не передавать параметр, то будет создан объект с текущей временной меткой и временной зоной по умолчанию. Временная зона в PHP, как правило, настраивается в файле php.ini. Вот так создается объект DateTime с текущим временем.

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

Несколько примеров создания объекта DateTime с передачей в конструктор строки, содержащей время.

$yesterday = new DateTime(‘yesterday’); // вчера
$twoDaysLater = new DateTime(‘+ 2 days’); // на 2 дня вперед
$oneWeekEarly = new DateTime(‘- 1 week’); // минус одна неделя

Второй параметр конструктора класса DateTime позволяет определить временную зону. Этот параметр имеет тип DateTimeZone.

Например, чтобы создать объект класса DateTime с временной зоной Москвы надо сделать следующее:

$yesterdayInMoscow = new DateTime(‘yesterday’, new DateTimeZone(‘Moscow’));

Конечно, мы также можем создать объект DateTime как обычно, с помощью строки.

$dateTime = new DateTime(‘2015-01-01 12:30:12’);

Формат

В зависимости от системы, которую мы собираемся проектировать, нам могут понадобится различные форматы даты и времени. Форматирование объекта DateTime в формат необходимый в конкретном проекте достаточно просто делается через метод DateTime::format().

Метод DateTime::format() принимает в качестве параметра строку. Эта строка может включать плейсхолдеры, перечисленные на странице официальной документации PHP.

Например, чтобы получить подобный формат YYYY-dd-mm, где Y – год, d – день, m – месяц необходимо сделать следующее:

Мы можем создать любой желаемый формат даты. Вот несколько дополнительных опций:

print_r($now->format(‘jS F Y’));
print_r($now->format(‘ga jS M Y’));
print_r($now->format(‘Y/m/d s:i:H’));

Сравнение дат и времени

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

В отличие же, от данной функции, объект DateTime предоставляет возможность сравнивать два объекта DateTime как два обычных числа. Вот несколько примеров:

$today = new DateTime(‘today’);
$yesterday = new DateTime(‘yesterday’);

Но бывают случаи, когда логическое значение от сравнения двух дат недостаточно. Например, нам нужно знать, точную разницу между двумя датами. И DateTime::diff() является тем методом, который поможет нам узнать разницу между двумя объектами DateTime. Этот метод возвращает объект класса DateInterval, который может быть использован для получения интервала, в любом требуемом нами формате посредством метода DateInterval::format.

Например, для получения количества дней между сегодняшней датой и вчерашней датой, мы можем сделать следующее:

Со всем разнообразием свойств класса DateInterval вы можете ознакомиться на официальном сайте PHP.

На этом все, и в следующей статье мы продолжим изучать классы для работы с датой и временем в PHP.

php datetime сравнение дат. Смотреть фото php datetime сравнение дат. Смотреть картинку php datetime сравнение дат. Картинка про php datetime сравнение дат. Фото php datetime сравнение дат

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Комментарии ( 3 ):

Всем привет извините что пишу здесь но е могли бы подсказать хотел бы узнать как сделать так что бы ретрансляцию для моего сайта хочу чтобы например телеканал тнт транслировалась прямо с моего сайта а не сервера тнт.. Вот этот сайт введет трансляцию мачт тв с своего сервера http://fifa.beta.tj/schedule

Уточните, пожалуйста, вы хотите чтобы, когда пользователь заходил к Вам на сайт, то он мог бы смотреть передачу на вашем сайте?

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

Copyright © 2010-2021 Русаков Михаил Юрьевич. Все права защищены.

Источник

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

Даны две даты (date1 и date2), и задача состоит в том, чтобы сравнить данные даты. Сравнение двух дат в PHP простое, когда обе даты находятся в одном и том же формате, но проблема возникает, когда обе даты находятся в другом формате.

Метод 1: Если данные даты имеют одинаковый формат, используйте простой оператор сравнения для сравнения дат.

Пример:

// PHP программа для сравнения дат

// Объявляем две даты и
// инициализируем это

// Используем оператор сравнения для
// сравниваем даты

Способ 2: Если обе указанные даты имеют разные форматы, используйте функцию strtotime () для преобразования указанных дат в соответствующий формат отметок времени и, наконец, сравните эти числовые отметки времени, чтобы получить желаемый результат.

Пример:

// PHP программа для сравнения дат

// Объявляем две даты в разных
// форматировать

// Используем функцию strtotime () для конвертации
// дата в dateTimestamp

// Сравнить дату отметки

Метод 3: Использование класса DateTime для сравнения двух дат.

Пример:

// PHP программа для сравнения дат

// Объявляем две даты в разных
// форматировать и использовать функцию DateTime ()
// конвертировать дату в DateTime

$date1 = new DateTime( «12-11-24» );

$date2 = new DateTime( «2011-03-26» );

Источник

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

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

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

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

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

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

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

ОБНОВИТЬ:

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

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

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

Решение

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

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

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

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

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

Для тех, кто не знает, что делает 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 проявляются когда вы манипулируете значениями дат.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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» );

Источник

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *