2012-11-30 16 views
0

我有一些代码,工作在iOS 5的完美的罚款,但断裂处的iOS 6iOS6的错误TimeInterval所

这是TimeIntervalSinceDate方法...

我发现别人有这个问题,但无解:

这里是我的代码:

NSString *origDate = @"2012-11-29 19:43:30"; 

    NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
    [df setFormatterBehavior:NSDateFormatterBehavior10_4]; 
    [df setDateFormat:@"YYYY-MM-dd HH:mm:ss"]; 
    NSDate *convertedDate = [df dateFromString:origDate]; 
    [df release]; 


    NSDate* sourceDate = [NSDate date]; 

    NSLog(@"sourceDate: %@", sourceDate); 
    NSLog(@"convertedDate: %@", convertedDate); 

    NSTimeInterval ti = [ sourceDate timeIntervalSinceDate:convertedDate]; 

    NSLog(@"interval double: %f", ti); 

在iOS 5中,我得到这个作为一种价值:

interval double: 711.113610 

在iOS 6中,我得到:

interval double: 31623151.242078 

有什么建议?

谢谢

+3

停止。不要。 –

+1

无需将格式器行为设置为10.4。这是默认设置。 – rmaddy

+2

这两个日期的日志输出是什么? – rmaddy

回答

3

看看苹果说的Date Formatters

一个常见的错误是使用 YYYY。 yyyy指定日历年,而YYYY指定ISO年份周历中使用的年度 (“年份周”)。在大多数 的情况下,yyyy和yyyy的产量相同,但它们可能与 不同。通常你应该使用日历年。

+0

谢谢yyyy(不是YYYY)在iOS5和iOS6中完美工作,非常感谢。 –

0

的iOS交换的Unicode版本5.1和6

的iOS 6.0 - 利用资本Ÿ的多年使用的tr35-25代替tr35-19

+0

但上面是直接的ASCII - 不应该关心Unicode。 –

+0

unicode规范tr35-25和19定义了日期格式符号。 – AlexWien

相关问题