2012-09-10 50 views

回答

3

從輸入日期獲取小時/分組件:

NSCalendar *gregorianCal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
NSDateComponents *dataComps = [gregorianCal components: (NSHourCalendarUnit | NSMinuteCalendarUnit) fromDate:yourDate]; 

NSInteger minutes = [dateComps minute]; 
NSInteger hours = [dateComps hour]; 

然後分裂的時間字符串並比較分鐘和小時。另一種方法是將字符串轉換爲NSDate並比較日期。

+0

dataComps中有一個錯字。感謝你的回答! –

0
- (BOOL)date:(NSDate*)date isBetweenDate:(NSDate*)beginDate andDate:(NSDate*)endDate 
{ 
    if ([date compare:beginDate] == NSOrderedAscending) 
     return NO; 

    if ([date compare:endDate] == NSOrderedDescending) 
     return NO; 

    return YES; 
} 
+0

我試過,但比較三日我應該設置日,月,年的兩個日期我收到..很無聊.. – Lolloz89

1

提議Aravindhanarvi可能看起來像下面的第二個解決方案...

NSString *time1 = @"12:30"; 
NSString *time2 = @"14:30"; 

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
formatter.dateFormat = @"HH:mm"; 
// ignore time zone of device 
formatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0]; 

NSDate *date1 = [formatter dateFromString:time1]; 
NSDate *date2 = [formatter dateFromString:time2]; 
NSDate *now = [NSDate date]; 

BOOL inBetween = ([now compare:date1] == NSOrderedDescending 
       && [now compare:date2] == NSOrderedAscending); 
+0

這個解決方案不關心三個日期的日期,月份和年份嗎?如果是這樣,你應該得到+1 – Lolloz89

+0

我沒有測試過,只是很快寫下來,但它不應該關心日期。 NSDate的' - date'方法總是返回當前的日期/時間。對於2個時間字符串,它應該使用當前日期來計算缺失值(日,月,年等)。 –

+0

嗨,我用這個,但我得到空。所以我突出了everyline,並將其轉換爲CST。我獲得time1和time2值的不同時間。 – marciokoko

相關問題