2012-11-30 41 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

相關問題