首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS6 NSDateFormatter默认年份

iOS6 NSDateFormatter默认年份
EN

Stack Overflow用户
提问于 2012-09-17 02:34:25
回答 1查看 806关注 0票数 2

有没有人注意到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”中,但似乎有更好的方法

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-06 21:48:09

是的,我刚刚注意到这个问题。显然,苹果公司报告了这个漏洞,请参阅http://openradar.appspot.com/12358210

编辑:这就是我在一个正在做的项目中处理这个问题的方式...

代码语言:javascript
复制
// 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];
}

代码语言:javascript
复制
// 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];

解决方法是..。

代码语言:javascript
复制
// 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];
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12449553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档