Vị từ của bạn có vẻ ổn.
Lý do bạn tìm thấy kết quả bằng không được trả lại tuy nhiên có thể là các ngày không hoàn toàn giống nhau.
Ví dụ:
05/04/2012 13:37:00
sẽ không phù hợp với 05/04/2012 13:37:01
như hai giá trị này không phải là hoàn toàn giống nhau.
Bạn có muốn kiểm tra ngày (ngày, tháng, năm) cũng như thời gian không?
Nếu bạn chỉ muốn kiểm tra ngày, bạn nên tạo ngày bắt đầu và ngày kết thúc và so sánh chúng bằng cách sử dụng ngày do người dùng chọn làm khung tham chiếu.
Điều gì đó tương tự như vậy sẽ tạo ngày và giờ cho 00:00:00.
//gather current calendar
NSCalendar *calendar = [NSCalendar currentCalendar];
//gather date components from date
NSDateComponents *dateComponents = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:[NSDate date]];
//set date components
[dateComponents setHour:0];
[dateComponents setMinute:0];
[dateComponents setSecond:0];
//return date relative from date
return [calendar dateFromComponents:dateComponents];
Tạo một ngày khác bằng cách đặt giờ, phút và giây thành 23:59:59 và kiểm tra ngày người dùng đã chọn nằm giữa các phạm vi này.
[NSPredicate predicateWithFormat:@"date BETWEEN %@", [NSArray arrayWithObjects:startOfDay, endOfDay, nil]]
Nó hoạt động, cảm ơn. Tôi đã nhận được một lỗi bằng cách sử dụng các mảng trong vị ngữ nhưng điều này làm việc ..... @ "eDate>% @ VÀ eDate <% @", date1, date2] Cảm ơn một lần nữa. – user2228755
tại sao bạn thêm 'NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit' trong 'thành phần: fromDate:' chỉ để quăng nó đi? – vikingosegundo
Tệ của tôi. Đây là mã tôi dán từ một dự án thực sự sử dụng các thành phần đó. Tôi đã bỏ qua việc xóa chúng vì mục đích của bài đăng này. Tôi sẽ sửa đổi điều đó ngay bây giờ;] Cảm ơn bạn đã chỉ ra! – CaptainRedmuff