두 개의 탄소 타임 스탬프를 비교하는 방법은 무엇입니까?


83

두 개의 타임 스탬프, edited_at 내가 생성하고 created_at (Laravel 's) ... 데이터베이스에서 둘 다 타임 스탬프 유형과 기본값 0000-00-00 00:00:00 ...

var_dump(edited_at variable)문자열을 제공합니다. 동안 var_dump(created_at variable)은 개체 / 탄소입니다. 이 타임 스탬프에 어떤 문제가 있습니까?

format ( 'U')을 사용하여 정수로 변환 한 후 둘 다 비교해야합니다. 이 메서드는 Carbon Object에서만 호출 할 수 있습니다. 어떻게 할 수 있습니까?


정확히 무엇을 비교하고 싶습니까? 어느 것이 더 오래된 것인지 알고 싶습니까?
lukasgeiter

그래, 난 나이 / 새로운 campare 할
하산 Saqib

답변:


189

첫째, Eloquent는 자동으로 타임 스탬프 ( created_at, updated_at)를 탄소 개체로 변환 합니다. updated_at멋진 기능을 얻기 위해 사용 하거나 속성 edited_at에서 모델을 지정할 수 $dates있습니다.

protected $dates = ['edited_at'];

이제 실제 질문으로 돌아갑니다. Carbon에는 여러 가지 비교 기능이 있습니다.

  • eq() 같음
  • ne() 같지 않음
  • gt() ~보다 큰
  • gte() 크거나 같음
  • lt() 이하
  • lte() 작거나 같음

용법:

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

2
시간이 아닌 날짜 만 비교하려면 어떻게해야합니까?
geckob

3
@geckob 가장 ​​쉬운 방법은 아마도하는 것입니다$date1->toDateString() == $date2->toDateString()
lukasgeiter

테스트 중이며 비교 연산자를 사용하여 Carbon 개체를 비교할 수 있습니다. 새로운 기능입니까?
JCarlosR

이것을 사용할 때 nullable 타임 스탬프를 처리해야합니다. Laravel은 SQL nullnullCarbon 객체 대신 PHP로 변환하고 call to a member function lt() on null.
okdewit

당신이 원하는 작업에 그 기능) ($ some_cabron_date-> endOfDay () 또는 $ some_cabron_date-> startOfDay 사용해야합니다
Williaan 로페스

21

Carbon에는 니모닉 이름 이있는 여러 비교 기능 이 있습니다 .

  • 동일()
  • notEqualTo ()
  • 보다 큰()
  • greaterThanOrEqualTo ()
  • lessThan ()
  • lessThanOrEqualTo ()

용법:

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

nesbot / carbon 1.36.2에 유효

사용중인 Carbon 버전이 확실하지 않은 경우 다음을 실행하십시오.

$composer show "nesbot/carbon"

문서 : https://carbon.nesbot.com/docs/#api-comparison


3

먼저이 답변에 설명 대로 내장 된 웅변 기능을 사용하여 타임 스탬프를 변환합니다 .

그런 다음 비교를 위해 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/ 참조


1

이것이 내가 두 날짜, now () 와 테이블의 날짜를 비교하는 방법입니다.

@if (\Carbon\Carbon::now()->lte($item->client->event_date_from))
    .....
    .....
@endif

제대로 작동해야합니다. Carbon에서 제공하는 비교 기능을 사용했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.