有没有人注意到iOS6 NSDateFormatter默认使用2000年,在
iOS6:
[NSDateFormatter分配初始化] dateFromString:@“7:30 alloc”]
=> 2000年1月1日上午7:30
iOS5:
=> 1970年1月1日上午7:30
问: 1.有没有更好的方法来比较两个不同的时间?我有一个地铁应用程序PATH Schedule/Map。地铁时间在数据库中硬编码为numSecondsSince1970。我通过比较出发时间和当前的numSecondsSince1970来告诉人们下一次到达的火车。现在我只是将1970年添加到时间字符串"2:30am“=> "1970 2:30am”中,但似乎有更好的方法
谢谢!
发布于 2012-10-06 21:48:09
是的,我刚刚注意到这个问题。显然,苹果公司报告了这个漏洞,请参阅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];https://stackoverflow.com/questions/12449553
复制相似问题