【发布时间】:2014-05-07 17:53:16
【问题描述】:
输出是:
测试首班车时间:2000-01-01 11:40:00 +0000
最近的时间:(null)
为什么我设置为 6:40 时数组中的第一个巴士时间显示为 11:40?为什么最后它说空?谢谢。
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"H:mm:ss";
NSDate *bus500_monday_To_Friday_T1 = [formatter dateFromString:@"06:40:00"]; // 6:40 AM
NSDate *bus500_monday_To_Friday_T2 = [formatter dateFromString:@"07:50:00"]; // 7:50 AM
NSDate *bus500_monday_To_Friday_T3 = [formatter dateFromString:@"08:20:00"]; // 8:20 AM
NSDate *bus500_monday_To_Friday_T4 = [formatter dateFromString:@"08:50:00"]; // 8:50 AM
NSDate *bus500_monday_To_Friday_T5 = [formatter dateFromString:@"09:20:00"]; // 9:20 AM
NSDate *bus500_monday_To_Friday_T6 = [formatter dateFromString:@"09:50:00"]; // 9:50 AM
NSDate *bus500_monday_To_Friday_T7 = [formatter dateFromString:@"10:20:00"]; // 10:20 AM
NSDate *bus500_monday_To_Friday_T8 = [formatter dateFromString:@"10:50:00"]; // 10:50 AM
NSDate *bus500_monday_To_Friday_T9 = [formatter dateFromString:@"11:20:00"]; // 11:20 AM
NSDate *bus500_monday_To_Friday_T10 = [formatter dateFromString:@"11:50:00"]; // 11:50 AM
NSDate *bus500_monday_To_Friday_T11 = [formatter dateFromString:@"12:20:00"]; // 12:20 PM
NSDate *bus500_monday_To_Friday_T12 = [formatter dateFromString:@"12:50:00"]; // 12:50 PM
NSDate *bus500_monday_To_Friday_T13 = [formatter dateFromString:@"13:20:00"]; // 1:20 PM
NSDate *bus500_monday_To_Friday_T14 = [formatter dateFromString:@"13:50:00"]; // 1:50 PM
NSDate *bus500_monday_To_Friday_T15 = [formatter dateFromString:@"14:20:00"]; // 2:20 PM
NSDate *bus500_monday_To_Friday_T16 = [formatter dateFromString:@"14:50:00"]; // 2:50 PM
NSDate *bus500_monday_To_Friday_T17 = [formatter dateFromString:@"15:20:00"]; // 3:20 PM
NSDate *bus500_monday_To_Friday_T18 = [formatter dateFromString:@"15:50:00"]; // 3:50 PM
NSDate *bus500_monday_To_Friday_T19 = [formatter dateFromString:@"16:20:00"]; // 4:20 PM
NSDate *bus500_monday_To_Friday_T20 = [formatter dateFromString:@"16:50:00"]; // 4:50 PM
NSDate *bus500_monday_To_Friday_T21 = [formatter dateFromString:@"17:20:00"]; // 5:20 PM
NSDate *bus500_monday_To_Friday_T22 = [formatter dateFromString:@"17:50:00"]; // 5:50 PM
NSDate *bus500_monday_To_Friday_T23 = [formatter dateFromString:@"18:20:00"]; // 6:20 PM
NSDate *bus500_monday_To_Friday_T24 = [formatter dateFromString:@"19:05:00"]; // 7:05 PM
NSArray *bus500Times = @[bus500_monday_To_Friday_T1,
bus500_monday_To_Friday_T2,
bus500_monday_To_Friday_T3,
bus500_monday_To_Friday_T4,
bus500_monday_To_Friday_T5,
bus500_monday_To_Friday_T6,
bus500_monday_To_Friday_T7,
bus500_monday_To_Friday_T8,
bus500_monday_To_Friday_T9,
bus500_monday_To_Friday_T10,
bus500_monday_To_Friday_T11,
bus500_monday_To_Friday_T12,
bus500_monday_To_Friday_T13,
bus500_monday_To_Friday_T14,
bus500_monday_To_Friday_T15,
bus500_monday_To_Friday_T16,
bus500_monday_To_Friday_T17,
bus500_monday_To_Friday_T18,
bus500_monday_To_Friday_T19,
bus500_monday_To_Friday_T20,
bus500_monday_To_Friday_T21,
bus500_monday_To_Friday_T22,
bus500_monday_To_Friday_T23,
bus500_monday_To_Friday_T24];
NSDate *currentTime = [NSDate dateWithTimeInterval:[[NSTimeZone localTimeZone] secondsFromGMT]
sinceDate:[NSDate date]];;
NSDate *closestTime500;
for(NSDate *date in bus500Times)
{
if([date timeIntervalSinceDate:currentTime] > 0)
{
closestTime500 = date;
break;
}
}
NSLog(@"Testing first bus time: %@", bus500_monday_To_Friday_T1);
NSLog(@"Closest time: %@", closestTime500);
【问题讨论】:
-
因为您的所有时间值都将早于“currentTime”。
-
(提示:NSLog 你的时间值之一。)
-
哦,它们都在 2000 年。我如何让 NSDate 忽略年、月和日?我只关心小时、分钟、秒
-
嗯,这就是我建议不要使用 NSDate 的原因之一。
-
(你不应该像那样对 NSDate 时区感到厌烦。)
标签: ios objective-c nsdate