2010-10-29 39 views
14

Với SDK iOS, tôi cần tìm một cách dễ dàng và an toàn để xem liệu một NSDate là hôm nay, hôm qua, ngày mai. Những gì tôi đang tìm kiếm là một cái gì đó như thế này trong mã giả:Tìm hiểu xem NSDate là hôm nay, hôm qua, ngày mai

NSDate *myDate = someDate; 
if ([myDate isTomorrow]) { 
    NSLog("Tomorrow"); 
} 

Bạn sẽ giải quyết nó như thế nào?

+0

thể trùng lặp của [Hãy so sánh NSDate cho hôm nay hoặc Ngày hôm qua] (http://stackoverflow.com/questions/2893835/compare-nsdate-for-today-or-yesterday) –

Trả lời

33

Kiểm tra lớn NSDateextension lớp Erica Sadun của chúng tôi: http://github.com/erica/NSDate-Extensions

Có rất nhiều so sánh ngày, trong đó có chính xác những gì bạn cần :)

+0

Phát hiện ra sau khi chơi với điều này một chút có vẻ như có một số vấn đề, ví dụ với tiết kiệm ánh sáng ban ngày cũng là dateBysubstractingDays không hoạt động. Đó là một phần mở rộng tuyệt vời nhưng không phải lúc nào cũng không an toàn. – mrrmatinsi

+1

Đối với những người sẽ đọc nhận xét: dự án đã được cập nhật nhiều lần nên đừng lo lắng, mọi thứ sẽ hoạt động tốt. – Nekto

+2

Mã của Erica là * chính xác * những gì tôi đang tìm kiếm và một loại tiện ích tuyệt vời cho NSDate.Rat khuyen khich. –

36

Tôi hiểu rằng đây là khá cũ, nhưng tôi muốn mang câu trả lời cập nhật (vì tôi không thấy ai khác đăng câu trả lời mới nhất).

Kể từ iOS 8.0 bạn có một loạt các chức năng mà bạn có thể sử dụng cho ngày so sánh:

  • compareDate: NHCTVN: toUnitGranularity:
  • IsDate: equalToDate: toUnitGranularity:
  • IsDate: inSameDayAsDate:
  • isDateInToday:
  • isDateInTomorrow:
  • isDateInWeekend:
  • isDateInYesterday:

Xem dưới đây Ví dụ:

NSDate *today = [NSDate new]; 
NSCalendar* calendar = [NSCalendar currentCalendar]; 

BOOL isToday = [calendar isDateInToday:today]; 
BOOL isYesterday = [calendar isDateInYesterday:today]; 

isToday sẽ YES.

Hôm qua sẽ KHÔNG, vì chúng tôi đã cung cấp ngày này.

Xem Apple's Documentation để đọc thêm.

3

Swift 3

let isToday = Calendar.current.isDateInToday(yourDate) 

Sau đó bạn có thể kiểm tra giá trị và tiến hành phù hợp với chỉ đơn giản là:

if isToday { 
    //If true, do this 
} 

Có chức năng tương tự cho ngày mai, ngày cuối tuần, và một vài người khác, ví dụ:

let isTomorrow = Calendar.current.isDateInTomorrow(yourDate) 

This guide có tất cả trong Objective-C và Swift:

enter image description here

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