Tôi quan tâm đến việc tạo phương thức để tìm xem ngày hiện tại có nằm trong khoảng thời gian nhất định vào bất kỳ ngày cụ thể nào không. Đó là chương trình lập kế hoạch, vì vậy tôi muốn tìm sự kiện nào đang diễn ra tại thời điểm hiện tại. Mỗi ngày có cùng một khoảng thời gian: 820-900, 900-940, 940-1020, v.v. Vì điều này phải được thực hiện vào bất kỳ ngày nào tôi không biết cách tạo một NSDate với một thời điểm nhất định. Tôi nghĩ rằng điều này có thể được thực hiện với NSTimeInterval nhưng tôi không chắc chắn làm thế nào để nhanh chóng đó.NSDate giữa hai NSDates
Trả lời
Đây không phải là hoàn hảo, nhưng bạn có thể sử dụng [NSDate so sánh:] để kiểm tra lại ngày chống lại cả ranh giới:
NSDate *firstDate = ...
NSDate *secondDate = ...
NSDate *myDate = [NSDate date];
switch ([myDate compare:firstDate]) {
case NSOrderedAscending:
NSLog(@"myDate is older");
// do something
break;
case NSOrderedSame:
NSLog(@"myDate is the same as firstDate");
// do something
break;
case NSOrderedDescending:
NSLog(@"myDate is more recent");
// do something
break;
}
switch ([myDate compare:secondDate]) {
case NSOrderedAscending:
NSLog(@"myDate is older");
// do something
break;
case NSOrderedSame:
NSLog(@"myDate is the same as secondDate");
// do something
break;
case NSOrderedDescending:
NSLog(@"myDate is more recent");
// do something
break;
}
Hoặc ngắn gọn hơn:
BOOL between = NO;
if (([myDate compare:firstDate] == NSOrderedDescending) &&
([myDate compare:secondDate] == NSOrderedAscending)) {
between = YES;
}
Tôi chắc chắn có một cách tốt hơn để so sánh ngày phức tạp, nhưng điều này sẽ hoạt động.
Xem qua - [Thành phần NSCalendar: fromDate:]. Nó sẽ cho phép bạn 'phân hủy' một ngày thành các thành phần khác nhau của nó, và sau đó bạn có thể, trong trường hợp này, nhìn vào giờ và phút.
Cách dễ nhất để thực hiện việc này là sử dụng -timeIntervalSinceReferenceDate
để biến từng ngày của bạn thành một giá trị được nhập NSTimeInterval
, thực sự chỉ là double
.
NSTimeInterval rightNow = [[NSDate date] timeIntervalSinceReferenceDate];
Từ đó, xác định xem ngày ở giữa hai ngày nhất định có chỉ là vấn đề so sánh số đơn giản hay không.
Nếu bạn cần chuyển đổi từ một biểu diễn chuỗi của một ngày thành một cá thể NSDate để truy xuất một khoảng thời gian, hãy sử dụng NSDateFormatter.
Nếu bạn cần tạo ngày từ các thành phần ngày đã biết, hãy sử dụng NSCalendar. (nghĩa là bạn biết năm là 2010, tháng là 4 và ngày là 12, bạn có thể sử dụng các thành phần của NSCalendar để tạo một cá thể NSDate thông qua phương thức -dateFromComponents:
.).
Như Ben chỉ định, giao diện phần NSCalendar có thể cũng được sử dụng để Suss ra phút giờ & để xác định xem nó là trong một phạm vi (mà dường như sẽ là một cách sử dụng điển hình trong đó nhất sự kiện không xảy ra mỗi ngày cùng một lúc ... nhưng ... chắc chắn ... cũng có lý do để làm điều đó!)
- 1. Sự khác biệt giữa hai NSDates
- 2. Nhận chênh lệch thời gian chính xác giữa hai NSDate?
- 3. Sự khác biệt về giờ giữa hai NSDate
- 4. nếu NSDate là Thứ Hai
- 5. NSDate, so sánh hai ngày
- 6. So sánh trên NSDates ở các múi giờ khác nhau?
- 7. Nhận một dãy số NSDates tương lai
- 8. Nhận tất cả NSDates BETWEEN startDate và endDate
- 9. NSDateComponents của một NSDate
- 10. NSDate trừ một tháng
- 11. Nhận NSDate từ NSDate được điều chỉnh theo múi giờ
- 12. NSDate - Offsetting Múi giờ
- 13. NSDate từ NSString
- 14. NSString để NSDate
- 15. ngày Thêm vào NSDate
- 16. UIDatePicker trở sai NSDate
- 17. NSTimeInterval to NSDate
- 18. NSDate từ NSDateComponents
- 19. Tạo NSDate Monotouch
- 20. Http ngày để NSDate
- 21. NSDate từ chuỗi
- 22. Tên ngày từ NSDate?
- 23. NSDate với thành phần ngày từ thành phần một và thời gian từ một NSDate
- 24. Làm thế nào để kiểm tra ngày nào trong tuần là (ví dụ: Thứ Ba, Thứ Sáu?) Và so sánh hai NSDates?
- 25. NSDate chuyển thành NSNumber MYSTERY
- 26. tạo NSDate từ một chuỗi
- 27. Chuỗi mô tả về NSDate
- 28. Thêm 90 phút vào NSDate
- 29. Tạo ngày giữa hai ngày
- 30. Telnet giữa hai máy linux
không có ví dụ. :(:( – bluefloyd8