2012-01-05 36 views

Trả lời

86

Hãy thử điều này:

if ([someDate timeIntervalSinceNow] < 0.0) { 
    // Date has passed 
} 
+13

tôi đặt đó vào một phương pháp loại để bạn có thể sử dụng 'someDate.isInPast'. –

+0

mã của bạn chỉ so sánh ngày không phải là thời gian. Giống như tôi đang so sánh cùng một ngày nhưng thời gian khác nhau như thế này: 1/1/2015 5:00:00 và 1/1/2015 7:00:00 với ngày này nó cho tôi biết Ngày đã trôi qua. – Daddy

+1

+ Bố, không chắc ý bạn là gì. Theo tài liệu, phương pháp này phải hoàn hảo: "Khoảng thời gian giữa đối tượng ngày và ngày và giờ hiện tại. (Chỉ đọc) Nếu đối tượng ngày sớm hơn ngày và giờ hiện tại, giá trị của thuộc tính này là âm." –

3

Bạn có thể sử dụng

[NSDate date]; 

để có được một đối tượng NSDate đại diện cho thời gian hiện tại và ngày.

Sau đó, so sánh với ngày bạn đang phân tích, ví dụ:

if ([currentDate timeIntervalSince1970] > [yourDate timeIntervalSince1970]) { 
// yourDate is in the past 
} 

bạn có thể sử dụng để so sánh hai ngày bất kỳ. Hi vọng điêu nay co ich.

+1

hoặc làm điều đó inline: ([[ Ngày NSDate] timeIntervalSince1970]> [yourDate timeIntervalSince1970]) –

+0

Tôi vừa cung cấp một giải pháp tổng quát hơn để so sánh các ngày - so sánh một ngày đến nay là một trường hợp thích hợp. Tuy nhiên, trong thực tế, bạn có thể sẽ chỉ sử dụng timeIntervalSinceNow trong trường hợp cụ thể này. –

6

bạn cần sử dụng so sánh NSDate, nhiều câu trả lời ở đây sẽ hỗ trợ bạn.

iOS: Compare two dates

logic sẽ cần tinh chỉnh, nhưng điều này nên đặt bạn đi đúng hướng:

- (BOOL)date:(NSDate*)date isBefore:(BOOL)before otherDate:(NSDate*)otherDate ; 
{ 
    if(before && ([date compare:otherDate] == NSOrderedAscending)) 
     return YES; 
    if (!before && ([date compare:otherDate] == NSOrderedDescending)) 
     return YES; 
} 

sử dụng:

if([self date:yourDate isBefore:YES otherDate:[NSDate date]]) 
+4

Trên ghi chú kiểu mã hóa: tham số thứ hai của bạn nên được đặt tên là 'isBefore:'. Đọc to "ngày: X làBefore: YES/NO otherDate: Y" có vẻ tốt hơn IMO nhiều hơn "ngày: X là: YES/NO otherDate: Y". – Taum

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