2015-04-16 13 views
26

Tôi có hai timestamps, edited_at mà tôi tạo ra và created_at (Laravel của) ... Trong cơ sở dữ liệu, cả hai đều có kiểu timestamp và giá trị mặc định 0000-00-00 00:00:00 ... NhưngLàm thế nào để so sánh hai Dấu thời gian Carbon?

var_dump(edited_at variable) là cho chuỗi. Trong khi var_dump(created_at variable) là đối tượng/Carbon. Điều gì là sai với những dấu thời gian?

Tôi phải so sánh cả hai sau khi chuyển đổi thành số nguyên sử dụng định dạng ('U'). Tôi chỉ có thể gọi phương pháp này trên Carbon Object. Làm thế nào tôi có thể làm điều đó?

+0

Bạn muốn so sánh chính xác điều gì? bạn có muốn biết cái nào cũ hơn/mới hơn không? – lukasgeiter

+0

có, tôi muốn cắm trại cũ/mới hơn –

+0

http://carbon.nesbot.com/docs/#api-comparison – ceejayoz

Trả lời

75

Đầu tiên, Eloquent tự động chuyển đổi dấu thời gian của nó (created_at, updated_at) thành các đối tượng carbon. Bạn chỉ có thể sử dụng để có được updated_at rằng tính năng tốt đẹp, hoặc chỉ định edited_at trong mô hình của bạn trong $dates tài sản:

protected $dates = ['edited_at']; 

Bây giờ trở lại câu hỏi thực tế của bạn. Carbon có một loạt các chức năng so sánh:

  • eq() bằng
  • ne() không bằng
  • gt() lớn hơn
  • gte() lớn hơn hoặc bằng
  • lt() ít hơn
  • lte() ít hơn hoặc bằng

Cách sử dụng:

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

Làm cách nào để tôi có thể so sánh ngày tháng và không phải thời gian? – geckob

+2

@geckob Cách đơn giản nhất có thể là '$ date1-> toDateString() == $ date2-> toDateString()' – lukasgeiter

+0

Tôi đang thử nghiệm và có thể sử dụng toán tử so sánh để so sánh các đối tượng Carbon. Nó là một tính năng mới? – JCarlos

1

Thứ nhất, chuyển đổi các dấu thời gian bằng cách sử dụng built-in chức năng hùng hồn, như mô tả in this answer.

Sau đó, bạn chỉ có thể sử dụng chức năng min() hoặc max() của Carbon để so sánh. Ví dụ:

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

này sẽ echo thấp hơn của hai ngày, mà trong trường hợp này là $dt1.

Xem http://carbon.nesbot.com/docs/

Các vấn đề liên quan