2013-11-20 51 views
3

我使用NSDateformatter來解析日期。它工作正常,直到我更新到iOS 7.0.4。但是,由於更新我得到一個零值,NSDateformatter在IOS 7.0.4中不起作用

這是我試圖解析

11/20/2013 3:30:05 PM 

下面的日期是同

NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init]; 
dateFormatter1.dateFormat = @"MM/dd/yyyy hh:mm:ss a"; 
[dateFormatter1 setLocale:[NSLocale currentLocale]]; 
NSDate *date = [dateFormatter1 dateFromString:[items objectAtIndex:2]]; 

的代碼,但我得到零作爲日期。

我該如何在IOS 7.0.4中完成這項工作?

+0

您確定[items objectAtIndex:2]的值是正確的。我在iOS 7模擬器上也嘗試了代碼,它對我來說工作正常。 –

+0

你確定你還有東西在'[items objectAtIndex:2]'? – GeneralMike

+0

對,您需要爲我們提供'[items objectAtIndex:2]' –

回答

4

你的日期是局部的,但你正在使用的設備的語言環境。 但是AM/PM在其他地區可能會有所不同。

-(void)dateTest { 
    NSString *inputDate = @"11/20/2013 3:30:05 PM"; 
    NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init]; 
    dateFormatter1.dateFormat = @"MM/dd/yyyy hh:mm:ss a"; 
    [dateFormatter1 setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]]; 
    NSDate *date = [dateFormatter1 dateFromString:inputDate]; 
    NSLog(@"date: %@", date); //OUTPUT date: 2013-11-20 15:30:05 +0000 
} 
2

你可以發佈什麼字符串存儲在[items objectAtIndex:2]? 我嘗試它,它爲我工作得很好:

-(void)dateTest 
{ 
    NSString *inputDate = @"11/20/2013 3:30:05 PM"; 
    NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init]; 
    dateFormatter1.dateFormat = @"MM/dd/yyyy hh:mm:ss a"; 
    [dateFormatter1 setLocale:[NSLocale currentLocale]]; 
    NSDate *date = [dateFormatter1 dateFromString:inputDate]; 
    NSLog(@"date: %@", date); //OUTPUT date: 2013-11-20 15:30:05 +0000 
} 
+0

感謝您的回覆。事實上,相同的代碼在IOS 7.0.2中工作正常。我只有IOS 7.0.4纔有這個問題。我可以確認[items objectAtIndex:2]具有相同的日期。 – Zach

0

如果它會顯示一個不同的時間,你可能需要設置默認的時區(這種情況僅ios7後)

[dateFormat setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]]; 

似乎默認時區是該設備具有一個,所以如果你沒有指定默認的時區,你可能會得到奇怪的結果。在ios7之前,它始終是格林尼治標準時間。