2011-08-22 43 views
14

Tôi đang dùng hai NSDates bằng cách sử dụng công cụ chọn thời gian ngày. Bây giờ tôi muốn đếm số ngày giữa hai NSDates này. Làm thế nào tôi có thể tìm thấy sự khác biệt giữa hai NSDates.Sự khác biệt giữa hai NSDates

hãy cho tôi một số giải pháp.

Cảm ơn rất nhiều.

+0

thể trùng lặp của [Số ngày giữa hai NSDates] (http://stackoverflow.com/câu hỏi/4739483/số-of-ngày-giữa-hai-nsdates) –

Trả lời

24

NSDate tham chiếu là một tài liệu lớn nhỏ: http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSDate_Class/Reference/Reference.html

- (NSTimeInterval)timeIntervalSinceDate:(NSDate *)anotherDate 

là những gì bạn đang tìm kiếm nếu bạn muốn thời gian chênh lệch khoảng.

Đối ngày (như không phải mỗi ngày có cùng số phút, giờ) bạn muốn xem Martins trả lời dưới đây và sử dụng NSDateComponents với [NSCalendar currentCalendar]

+0

Mỗi ngày không có cùng số giờ ??? Tôi nghĩ hàng ngày có 24 giờ? Bạn có thể giải thích như thế nào? – GeneCode

+0

Trái đất không quay đồng đều, một số ngày có thể dài hơn những ngày khác. –

53

Dưới đây là một chút đá quý cho bạn - với hơn chỉ vài ngày :

// Assuming you have fistDate and secondDate 

unsigned int unitFlags = NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitDay | NSCalendarUnitMonth; 

NSDateComponents *conversionInfo = [currCalendar components:unitFlags fromDate:fistDate toDate:secondDate options:0]; 

int months = [conversionInfo month]; 
int days = [conversionInfo day]; 
int hours = [conversionInfo hour]; 
int minutes = [conversionInfo minute]; 

này là rất hữu ích - đặc biệt là khi định dạng chuỗi như:

[NSString stringWithFormat:@"%d months , %d days, %d hours, %d min", months, days, hours, minutes]; 

Chúc mừng Mã hóa :)

+8

+1 đây là cách chính xác để làm điều đó. –

+0

@Dave DeLong Yeah đó là một người đáng tiếc là nội dung để chơi một cách khó khăn với phao và ints cho những vấn đề như vậy. – martin

+0

Và? chúng ta nên làm gì với firstDate và secondDate? – Gargo

1

Dưới đây là một việc thực hiện Swift (tôi sử dụng tất cả thời gian trong khi gỡ lỗi những thứ như yêu cầu mạng và JSON phân tích cú pháp):

let date1 = NSDate() 

// do some long running task 

let date2 = NSDate() 
print(date2.timeIntervalSinceDate(date1)) 

// you can also do this in one line, of course: 
print(NSDate().timeIntervalSinceDate(date1)) 
Các vấn đề liên quan