I am trying to have points in time and then compare them. I have figured out how to compare them, but I am trying to create NSDate objects to represent times of day, and it is causing some trouble. I used NSDateFromComponents and used the setHour: and setMinute: functions, but it does not successfully modify the object. It also needs to automatically set the other components of the date to the current time and date.
COMPARING OBJECTS:
static bool DateIsBetween(NSDate *beginDate, NSDate *date, NSDate *endDate) {
return [date timeIntervalSince1970] > [beginDate timeIntervalSince1970] && [date timeIntervalSince1970] < [endDate timeIntervalSince1970];
}
CREATING DATE OBJECTS:
NSCalendar *calendar = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];
[calendar setTimeZone:[NSTimeZone timeZoneWithName:@"EST"]];
NSDateComponents *weekdayComponents = [calendar components:NSWeekdayCalendarUnit fromDate:todayDate];
NSDateComponents *genericTimeComponents = [[NSDateComponents alloc]init];
[genericTimeComponents setHour:5];
[genericTimeComponents setMinute:0];
[genericTimeComponents setDay:weekdayComponents.day];
[genericTimeComponents setYear:weekdayComponents.year];
[genericTimeComponents setMonth:weekdayComponents.month];
NSDateComponents *secondComps = [[NSDateComponents alloc]init];
[secondComps setHour:7];
[secondComps setMinute:0];
[secondComps setDay:weekdayComponents.day];
[secondComps setYear:weekdayComponents.year];
[secondComps setEra:weekdayComponents.era];
[secondComps setMonth:weekdayComponents.month];
Make sure to use parentheses in your date compare function (for the sake of clarity only; logically, it should work just fine):
For such cases, it’s a good idea to create a category for NSDate class and write an objective-c method.
For the rest, I tried the following code and it worked for me: