Сравнение метки времени из базы данных за последние 6 месяцев - PullRequest
0 голосов
/ 16 мая 2018

Я использую laravel, и по какой-то причине моя логика здесь не применяется правильно.

Здесь оператор if должен взять результаты из базы данных и посмотреть, находится ли метка времени create_at в течение последних 6 месяцев,Если так, у меня есть класс css для 'newCust' ниже.Если временная метка create_at превышает 6 месяцев, она не должна применяться.

Я использую subMonth для получения последних 6 месяцев, но, похоже, она не применяется, потому что теперь она применяет класс CSS ко всем строкам, поэтомуМне интересно, если мое сравнение дат здесь не так.

$d->createdAt = new \DateTime($d->created_at);  // created_at is full timestamp (2011-01-01 00:00:00)
$deadline = Carbon::now()->subMonths(6)->format('Y-m-d H:i:s');
if($d->createdAt > $deadline){  // I'm trying to say here that if the created_at timestamp is within the last 6 months, then apply following logic
$d->call_status = 'newCust';
}

Ответы [ 2 ]

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

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

, если $d является экземпляром модели, created_at должен быть уже углеродным объектом

$deadline = Carbon::now()->subMonths(6);

if($d->created_at.gt($deadline)){  
    // Do something 
    // Set the format here
}   

Углерод имеет несколько функций сравнения:

  • eq() равно
  • ne() не равно
  • gt() больше
  • gte() больше или равно
  • lt() меньше
  • lte() меньше или равно
0 голосов
/ 16 мая 2018

Используя просто старый DateTime, это будет делать то, что вы хотите

$createdAt = new \DateTime('2017-11-17 00:00:00');
echo $createdAt->format('d/m/Y H:i:s') . PHP_EOL;

$deadline = new \DateTime();
$deadline->sub( new DateInterval('P6M') );
echo $deadline->format('d/m/Y H:i:s') . PHP_EOL;

if ($createdAt > $deadline) {
    echo 'YES';
}else{
    echo 'NO';
}

Отрегулируйте дату, используемую $createdAt для проверки.

...