有没有人注意到,iOS6的NSDateFormatter缺省值为2000年时,没有一年,而在给定的
iOS6的:
[NSDateFormatter的alloc]初始化] dateFromString:@ “上午7:30”]
=> 2000年1月1日,上午7:30
iOS5的:
=> 1970年1月1日,上午7:30
问题:1.是否有更好的方法来比较两个不同的时间? 我有这样的地铁应用PATH计划/地图 。 地铁时代是硬编码在数据库中numSecondsSince1970。 我给人家下火车通过与当前numSecondsSince1970比较发车时间到达。 现在我只是追加1970年的时间字符串“凌晨2:30” =>“1970年凌晨2:30,”但它好像有一个更好的办法
谢谢!
是的,我只注意到这个问题。 显然,这是错误报道,在苹果,看到http://openradar.appspot.com/12358210
编辑:这是我在一个项目我正在处理这个问题?
// I use the following code in a category to parsing date strings
- (NSDate *)dateWithPath:(NSString *)path format:(NSString *)format
{
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];
formatter.dateFormat = format;
NSString *string = [self valueWithPath:path];
return [formatter dateFromString:string];
}
// old parsing code that worked fine in iOS 5, but has issues in iOS 6
NSDate *date = [element dateWithPath:@"datum_US" format:@"yyyy-MM-dd"];
NSDate *timeStart = [element dateWithPath:@"aanvang" format:@"HH:mm:ss"];
NSTimeInterval interval = [timeStart timeIntervalSince1970];
match.timeStart = [date dateByAddingTimeInterval:interval];
和修复...
// the following code works fine in both iOS 5 and iOS 6
NSDate *date = [element dateWithPath:@"datum_US" format:@"yyyy-MM-dd"];
NSDate *timeStart = [element dateWithPath:@"aanvang" format:@"HH:mm:ss"];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
calendar.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];
NSUInteger units = NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDateComponents *timeComps = [calendar components:units fromDate:timeStart];
match.timeStart = [calendar dateByAddingComponents:timeComps toDate:date options:0];