Php если дата сегодня

PHP: как проверить, установлена ​​ли дата сегодня, вчера или завтра

Я бы хотел проверить, есть ли дата сегодня, завтра, вчера или еще. Но мой код не работает.

$timestamp = "2014.09.02T13:34"; $date = date("dmY H:i"); $match_date = date('dmY H:i', strtotime($timestamp)); if($date == $match_date) < //Today >elseif(strtotime("-1 day", $date) == $match_date) < //Yesterday >elseif(strtotime("+1 day", $date) == $match_date) < //Tomorrow >else < //Sometime > 

Код всегда идет в другом случае.

Первый. У вас есть ошибка в использовании функции strtotime см. Документацию по PHP

int strtotime ( string $time [, int $now = time() ] ) 

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

Во- вторых. Вы используете формат dmY H: i, который включает временную часть. Если вы хотите сравнить только даты, вы должны удалить временную часть, например `$ date = date (» dmY «);` `

В третьих. Я не уверен, что он работает одинаково для вас, но мой PHP не понимает формат даты из $timestamp и возвращает 01.01.1970 02:00 в $match_date

$timestamp = "2014.09.02T13:34"; date('dmY H:i', strtotime($timestamp)) === "01.01.1970 02:00"; 

Вам нужно проверить, strtotime($timestamp) ли strtotime($timestamp) правильную строку даты. Если нет, вам нужно указать формат, который используется в переменной $timestamp . Вы можете сделать это, используя одну из функций date_parse_from_format или DateTime :: createFromFormat

$timestamp = "2014.09.02T13:34"; $today = new DateTime(); // This object represents current date/time $today->setTime( 0, 0, 0 ); // reset time part, to prevent partial comparison $match_date = DateTime::createFromFormat( "Ymd\\TH:i", $timestamp ); $match_date->setTime( 0, 0, 0 ); // reset time part, to prevent partial comparison $diff = $today->diff( $match_date ); $diffDays = (integer)$diff->format( "%R%a" ); // Extract days count in interval switch( $diffDays ) < case 0: echo "//Today"; break; case -1: echo "//Yesterday"; break; case +1: echo "//Tomorrow"; break; default: echo "//Sometime"; > 
 else if($difference > 1) < echo 'Future Date'; >else if($difference > 0) < echo 'tomarrow'; >else if($difference < -1) < echo 'Long Back'; >else < echo 'yesterday'; >?> 
diff($match_date); if($interval->days == 0) < //Today >elseif($interval->days == 1) < if($interval->invert == 0) < //Yesterday >else < //Tomorrow >> else < //Sometime > 

Нет встроенных функций для этого в Php (стыд ^^). Вы хотите сравнить строку даты с сегодняшним днем, вы можете использовать простой substr для ее достижения:

if (substr($timestamp, 0, 10) === date('Ymd')) < today >elseif (substr($timestamp, 0, 10) === date('Ymd', strtotime('-1 day'))

Нет преобразования даты, просто.

function getRangeDateString($timestamp) < if ($timestamp) < $currentTime=strtotime('today'); // Reset time to 00:00:00 $timestamp=strtotime(date('Ymd 00:00:00',$timestamp)); $days=round(($timestamp-$currentTime)/86400); switch($days) < case '0'; return 'Today'; break; case '-1'; return 'Yesterday'; break; case '-2'; return 'Day before yesterday'; break; case '1'; return 'Tomorrow'; break; case '2'; return 'Day after tomorrow'; break; default: if ($days >0) < return 'In '.$days.' days'; >else < return ($days*-1).' days ago'; >break; > > > 

Источник

Читайте также:  Plot vertical line python

PHP | Дата и время

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

Функция PHP date()

Функция date() выводит текущие дату и время в заданном формате. Также функция может конвертировать формат отметки времени (временная метка, метка времени или timestamp) в удобочитаемый формат.

Синтаксис

Параметры функции date():

format Обязательный. Задает формат метки времени timestamp Необязательный. Задает отметку времени. По умолчанию текущая дата и время

Функция date() возвращает строку, которая отформатирована в соответствии с указанным шаблоном format . Параметр timestamp задает метку времени. Если timestamp не задан, тогда используется текущее системное время.

Примечание: Отметка времени — это последовательность символов, обозначающая дату и / или время, когда произошло определенное событие.

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

Ниже представлена таблица с расшифровкой некоторых символов в строке format :

Символ в строке format Описание Пример возвращаемого значения
День
d День месяца с 2-мя цифрами от 01 до 31
D День недели в текстовом формате, 3 символа от Mon до Sun
z Порядковый номер дня в году (начиная с 0) От 0 до 365
Месяц
F Полное название месяца, например, January или March от January до December
m Порядковый номер месяца, 2 цифры от 01 до 12
M Сокращенное название месяца, 3 символа от Jan до Dec
Год
Y Порядковый номер года, 4 цифры Примеры: 1999, 2019
y Порядковый номер года, 2 цифры Примеры: 99, 19
Время
a Ante meridiem (лат. «до полудня») или Post meridiem (лат. «после полудня») в нижнем регистре am или pm
A Ante meridiem или Post meridiem в верхнем регистре AM или PM
g Часы в 12-часовом формате от 1 до 12
G Часы в 24-часовом формате от 0 до 23
h Часы в 12-часовом формате от 01 до 12
H Часы в 24-часовом формате, 2 цифры от 00 до 23
i Минуты, 2 цифры от 00 до 59
s Секунды, 2 цифры от 00 до 59

Ниже представлены некоторые примеры получения фактической информации о дате и времени:

Читайте также:  Internet expedition java io ioexception

Пример

 echo "Отображение текущей даты: " . date('d-m-Y') . "
";
echo "Отображение текущего времени: " . date('H:i:s') . "
";
echo "Отображение текущей даты и времени: " . date('d-m-Y H:i:s') . "
";
echo "Отображение текущей даты и времени в длинном формате: " . date('d F Y, D - g:i:s A');
?>

Как всегда в футере выводить текущий год?

Используйте функцию date() для автоматического обновления года в футере вашего веб-сайта:

Пример

 Copyright © 2014- Все права защищены. 

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

Примечание: Обратите внимание, что функция PHP date() вернет текущую дату / время сервера!

Определите свой часовой пояс

Если сервер, на котором расположен ваш сайт, находится в другой стране или настроен для другого часового пояса, то текущее время, возвращаемое функцией date(), будет отличаться от реального времени вашего часового пояса.

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

Функция date_default_timezone_set() устанавливает временную зону по умолчанию для всех функций даты и времени в скрипте.

Параметр timezone_identifier — это идентификатор временной зоны.

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

В приведенном ниже примере для часового пояса устанавливается значение ‘Europe/Moscow’, а затем выводится текущее время в указанном формате:

Пример

 echo "Текущее время в Москве " . date("h:i:sa"); 
date_default_timezone_set('Europe/Kiev');
echo "Текущее время в Киеве " . date("h:i:sa");
?>

Функция PHP mktime()

Необязательный параметр timestamp функции date() указывает временную метку. Если она не указано, будут использоваться текущая дата и время (как в примерах выше).

Но если вам нужно получить метку времени в прошлом или будущем, то сделать это можно с помощью функции mktime() . Вам нужно указать нужную дату, и она возвращается с меткой времени Unix. Метка времени Unix содержит количество секунд между эпохой Unix (1 января 1970 г., 00:00:00 GMT) и указанным временем.

Синтаксис данной функции следующий:

Здесь используются следующие данные:

hour Количество часов, прошедших с начала дня, указанного параметрами month, day и year. minute Количество минут, прошедших от начала часа, указанного параметром hour. second Количество секунд, прошедших от начала минуты, указанной параметром minute. month Количество месяцев, прошедших с конца предыдущего года. day Количество дней, прошедших с конца предыдущего месяца. year Номер года, может быть указан двумя или четырьмя цифрами.

Читайте также:  Счетный цикл в питоне

Аргументы могут быть опущены в порядке справа налево. В этом случае их значения по умолчанию равны соответствующим компонентам локальной даты/времени.

Функцию mktime() удобно использовать для выполнения арифметических операций с датами, так как она вычисляет верные значения при некорректных аргументах. Например, в следующем примере каждая строка выведет «Jan-01-1921»:

Источник

PHP: How to check if a date is today, yesterday or tomorrow

I would like to check, if a date is today, tomorrow, yesterday or else. But my code doesn’t work. Code:

$timestamp = "2014.09.02T13:34"; $date = date("d.m.Y H:i"); $match_date = date('d.m.Y H:i', strtotime($timestamp)); if($date == $match_date) < //Today >elseif(strtotime("-1 day", $date) == $match_date) < //Yesterday >elseif(strtotime("+1 day", $date) == $match_date) < //Tomorrow >else < //Sometime >

I would advice you to take a look at Datetime object.. And most likely your $timestamp isn’t being converted correctly.

10 Answers 10

First. You have mistake in using function strtotime see PHP documentation

int strtotime ( string $time [, int $now = time() ] ) 

You need modify your code to pass integer timestamp into this function.

Second. You use format d.m.Y H:i that includes time part. If you wish to compare only dates, you must remove time part, e.g. `$date = date(«d.m.Y»);«

Third. I am not sure if it works in the same way for you, but my PHP doesn’t understand date format from $timestamp and returns 01.01.1970 02:00 into $match_date

$timestamp = "2014.09.02T13:34"; date('d.m.Y H:i', strtotime($timestamp)) === "01.01.1970 02:00"; 

You need to check if strtotime($timestamp) returns correct date string. If no, you need to specify format which is used in $timestamp variable. You can do this using one of functions date_parse_from_format or DateTime::createFromFormat

$timestamp = "2014.09.02T13:34"; $today = new DateTime("today"); // This object represents current date/time with time set to midnight $match_date = DateTime::createFromFormat( "Y.m.d\\TH:i", $timestamp ); $match_date->setTime( 0, 0, 0 ); // set time part to midnight, in order to prevent partial comparison $diff = $today->diff( $match_date ); $diffDays = (integer)$diff->format( "%R%a" ); // Extract days count in interval switch( $diffDays ) < case 0: echo "//Today"; break; case -1: echo "//Yesterday"; break; case +1: echo "//Tomorrow"; break; default: echo "//Sometime"; >

Источник

Оцените статью