PHP Datetime проверять дату в другом формате - PullRequest
0 голосов
/ 09 мая 2018

У меня проблема с датой и временем.

Во-первых, у меня есть значение DateTime, которое хранится в базе данных как 2018-05-08 15:54:40

Но я хочу проверить, только дата равна или нет.

Например:

$DateInDatabase = 2018-05-08 15:54:40
$DateSpecific = 2018-05-08

if ($DateInDatabase == $DateSpecific) {
   ......
}

Вопрос в том, как проверить только дату в $DateInDatabase

Ответы [ 4 ]

0 голосов
/ 09 мая 2018

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

Учитывая, что $DateInDatabase = '2018-05-08 15:54:40' и $DateSpecific = '2018-05-08'

if (false !== strpos($DateInDatabase,$DateSpecific)) {
   /* matched */
}

OR

$format = 'Ymd';
$DateInDatabase = (new DateTime($DateInDatabase))->format($format);
$DateSpecific = (new DateTime($DateSpecific))->format($format);
if ($DateInDatabase === $DateSpecific) {
   /* matched */
}
0 голосов
/ 09 мая 2018

Это проверит, равны ли ваши даты. Имейте в виду, что функция PHP date имеет ограничение в том, как далеко вы можете пройти за год. Минимум 01-01-1970, а максимум 19-01-2038 (здесь используется формат d-m-Y). Дата конвертируется в целое число (strtotime). Если эти числа равны, даты равны.

$DateInDatabase = '2018-05-08 15:54:40'
$DateSpecific = '2018-05-08'

$newDate1 = date("Y-m-d", strtotime($DateInDatabase));
$newDate2 = date("Y-m-d", strtotime($DateSpecific));


if ($newDate1 == $newDate2) {
   //equal
} else {
  //not equal
}
0 голосов
/ 09 мая 2018

Вы можете использовать метод php date для форматирования даты:

$DateInDatabase ='2018-05-08 15:54:40';
$DateSpecific = '2018-05-08';

if (date('Y-m-d', strtotime($DateInDatabase)) == $DateSpecific) {
  echo 'ok';
} else {
  echo 'not ok';
}

Подробнее о методе php date от здесь

0 голосов
/ 09 мая 2018

Если вас интересует только год-месяц-день, мое предложение будет что-то вроде:

// As per comments, the second param in the date function MUST be a UNIX timestamp, so strtotime will resolve this
$dateInDB = date("Y-m-d", strtotime($DateInDatabase)); // format to XXXX-XX-XX
$dateToCheck = date("Y-m-d", strtotime($DateSpecific)); // format to XXXX-XX-XX

if ($dateInDb == $dateToCheck)
{
    // They are the same
}
else
{
    // The are different
}

Как уже говорили другие, вы также можете использовать прямое сравнение строк;

$DateInDatabase = "2018-05-08 15:54:40";
$DateSpecific = "2018-05-08";

// This function uses the params haystack, needle in that order
if (stristr($DateInDatabase, $DateSpecific)) 
{
   // Match found
}
else
{
    // No match found
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...