2017-02-20 24 views
0

Это то, что я прямо сейчас:Изменить фильтр от принятия сегодня, чтобы как принимать вчера + Сегодня

set_time_limit(120); 
$now = (new \DateTime)->format('Y-m-d H:i:s'); 
$nowYmd = (new \DateTime())->format('Y-m-d'); 
foreach ($rows as $row) { 
    $deviceLog = []; 
    $deviceLog['installation_id'] = $this->parseForNull((int)$row[0]); 
    $deviceLog['device_id'] = $devicesSerialToId[$row[1]]; 
    $deviceLog['2'] = $this->parseForNull($row[2]); 
    $deviceLog['3'] = $this->parseForNull($row[3]); 
    $deviceLog['4'] = $row[4]; 
    $deviceLog['5'] = $this->parseForNull($row[5]); 
    $deviceLog['6'] = $this->parseForNull($row[6]); 
    $deviceLog['7'] = $this->parseForNull($row[7]); 
    $deviceLog['8'] = $this->parseBoolean($row[8]); 
    $deviceLog['9'] = $this->parseBoolean($row[9]); 
    $deviceLog['10'] = $this->parseBoolean($row[10]); 
    $deviceLog['11'] = $this->parseForNull(intval($row[11])); 
    $deviceLog['12'] = $this->parseForNull($row[12]); 
    $deviceLog['13'] = $this->parseForNull($row[13]); 
    $deviceLog['14'] = $this->parseForNull($row[14]); 
    $deviceLog['15'] = $this->parseForNull($row[15]); 
    $deviceLog['16'] = $this->parseForNull($row[16]); 
    $deviceLog['17'] = $this->parseForNull($row[17]); 
    $deviceLog['18'] = $this->parseBoolean($row[18]); 
    $deviceLog['19'] = $this->parseBoolean($row[19]); 
    $deviceLog['20'] = $this->parseForNull($row[20]); 
    $deviceLog['21'] = $this->parseBoolean($row[21]); 
    if (!empty($row[22])) { 
    $date = \DateTime::createFromFormat('d-M-y', $row[22]); 
    if(!$date || ($date && ($date->format('Y-m-d') != $nowYmd))) { 
     continue; 
    } 
    $deviceLog['last_seen'] = $date->format('Y-m-d'); 
} else { 
    continue; 
} 

Таким образом, в настоящее время, это последнее «если/другое» делает загруженный файл не добавить строку в БД, если строка в файле не совпадает с тем же днем, что и сегодня. Я хочу изменить то, что сегодня и вчера принято, но я понятия не имею. Есть идеи?

Запуск laravel.

ответ

1

Один из способов сделать это были бы создать DateTime объект для вчерашнего дня, а затем сравните, что разобранная дату:

$yesterday = new \DateTime('yesterday'); 

... 

$date = \DateTime::createFromFormat('d-M-y', $row[22]); 

if(!$date || $date < $yesterday) { 

Надеется, что это помогает!

+0

Работает как очарование. Огромное спасибо. Не знаю, почему я был потерян, но. :) – Stoff

+0

@RiggsFolly Я бы не стал классифицировать свой ответ как учебник ... –

 Смежные вопросы

  • Нет связанных вопросов^_^