I have this string which is passed to this method to produce 2 times:
Mon thru Friday 7:00 AM - 10:00 PM
-(void)dealWithTimeStrings2:(NSString*)timeString{
NSString *s = timeString;
NSCharacterSet *digits = [NSCharacterSet decimalDigitCharacterSet];
int idx = [s rangeOfCharacterFromSet:digits].location;
NSString *timeStr = [s substringFromIndex:idx];
NSArray *timeStringsArray2 = [timeStr componentsSeparatedByString:@" - "];
NSLog(@"timeStringsArray2 %@", timeStringsArray2);
//NOW TURN INTO DATE AND FORMAT TO 24HR
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"HH:mm a"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"CST"]];
NSString *openDateString = (NSString*)[timeStringsArray2 objectAtIndex:0];
NSString *closeDateString = (NSString*)[timeStringsArray2 objectAtIndex:1];
NSLog(@"someDateString %@,%@", openDateString,closeDateString);
NSDate *openDate = [dateFormatter dateFromString:openDateString];
NSDate *closeDate = [dateFormatter dateFromString:closeDateString];
NSLog(@"open, now, close %@,%@,%@", openDate,[NSDate date],closeDate);
}
And this produces:
timeStringsArray2 ( "7:00 AM", "10:00 PM" )
someDateString 7:00 AM,10:00 PM
open, now, close 2000-01-01 13:00:00 +0000,2013-07-24 23:51:55 +0000,2000-01-02 04:00:00 +0000
Here is the test code:
-(BOOL)timeCompare:(NSDate*)date1 until:(NSDate*)date2{
NSDate *now = [NSDate date];
BOOL inBetween = ([now compare:date1] == NSOrderedDescending && [now compare:date2] == NSOrderedAscending);
return inBetween;
}
As you can see, 23:46 is not between 6:00 and 18:00. However, I just ran this at 5:46 my time, which is in between 7:00AM and 10:00PM.