Подтвердить что ты не робот

Как сравнить две временные метки углерода?

У меня есть две временные метки, edit_at, которые я создал и создал_at (Laravel's)... В базе данных есть временная метка типа и значение по умолчанию 0000-00-00 00:00:00... Но

var_dump(edited_at variable) задает строку. Пока var_dump(created_at variable) - объект/углерод. Что не так с этими временными метками?

Мне нужно сравнить как после преобразования в целое число с использованием формата ('U'). Я могу назвать этот метод только для объекта Carbon. Как я могу это сделать?

4b9b3361

Ответ 1

Во-первых, Eloquent автоматически преобразует метки времени (created_at, updated_at) в объекты углерода. Вы можете просто использовать updated_at для получения этой приятной функции или указать edited_at в своей модели в свойстве $dates:

protected $dates = ['edited_at'];

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

  • eq() равно
  • ne() не равно
  • gt() больше
  • gte() больше или равно
  • lt() меньше
  • lte() меньше или равно

Использование:

if($model->edited_at->gt($model->created_at)){
    // edited at is newer than created at
}

Ответ 2

Сначала преобразуйте временную метку с помощью встроенной функциональности redoquent, как описано в этом ответе.

Затем вы можете просто использовать функцию Carbon min() или max() для сравнения. Например:

$dt1 = Carbon::create(2012, 1, 1, 0, 0, 0); $dt2 = Carbon::create(2014, 1, 30, 0, 0, 0); echo $dt1->min($dt2);

Это будет echo меньшая из двух дат, которая в этом случае $dt1.

См. http://carbon.nesbot.com/docs/