2011-10-17 27 views
1

我我進行解析時的代碼我得到了美國東部時間2011-10-17T14的AiringTime後訪問Web服務00Z剩下的代碼我下面寫在iPhone中沒有顯示適當的NSDate時間? 00:

NSString *string = [[dateArray objectAtIndex:0] objectForKey:@"AiringTime"]; 
NSArray *stringArray1 = [string componentsSeparatedByString:@"T"]; 
NSString *string1 = [stringArray1 objectAtIndex:1]; 
NSArray *stringArray2 = [string1 componentsSeparatedByString:@"Z"]; 
NSString *dateInString = [stringArray2 objectAtIndex:0]; 

nowDate =[stringArray1 objectAtIndex:0]; 

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"hh:mm:ss"]; 

NSDate *dateFromString = [formatter dateFromString:dateInString]; 
[formatter release]; 

以上的NSDate * dateFromString給我適當的輸出像14 :00從早上到晚上6:30 PM。在晚上6:30 PM之後dateFromString給出了毫無值的值,儘管dateInString有一個合適的值?爲什麼?以及它是如何發生的?

我的意思是, NSDate * dateFromString = [formatter dateFromString:dateInString]; 這行不行,dateFromString給了我零輸出。 由於這個奇怪的問題,我浪費了我最後3天的晚上時間。請幫幫我。 在此先感謝。

+0

當你得到一個零值時,字符串是什麼樣子 – jbat100

+0

你只對這個時間感興趣嗎?還是你想要完整的日期?你期望'dateFromString'持有什麼?因爲目前你只傳遞格式化的時間字符串(例如14:00:00)。格式化程序應該如何從中返回有效的日期對象? – jrturton

+0

@ jrturton,是的,我只對時間字符串感興趣。 –

回答

1

請參閱here,示例格式正是您正在處理的格式。

而是分裂和自己操縱字符串,只需做到以下幾點:

NSString *string = [[dateArray objectAtIndex:0] objectForKey:@"AiringTime"]; 
//Time in according to GMT+ 
NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'"]; 
[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; 
NSDate *dateFromString = [formatter dateFromString:string]; 
[formatter release]; 

如果你只在時間感興趣,然後NSDate的是沒有意義的。你想要什麼之後呢?

+0

我對不起問你一個愚蠢的問題,但我想知道我的時區是美國東部時間,所以我如何根據你的代碼設定我的時間? –

+0

不是一個愚蠢的問題 - 我從你的評論認爲,這是格林威治標準時間。你可以使用[NSTimeZone localTimeZone],如果那是你的本地時區,或[NSTimeZone timeZoneWithName:@「name here」](對不起,我不知道美國東部時間的正式名稱) – jrturton

+0

對不起,上面的代碼時間是根據24小時耶12小時? –

相關問題