2012-10-11 55 views
0

我試圖解析這樣的日期:2012-10-20T13:45:00+002,此代碼:的NSDate和設備的時區

NSDateFormatter* formatter = [[NSDateFormatter alloc]init]; 
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZ"]; 
NSDate *date = [formatter dateFromString:@"2012-10-20T13:45:00+002"]; 

但是當我嘗試將其輸出的設備,它的時區已經是+2使用此上:

NSDateFormatter *dateformatter = [[NSDateFormatter alloc] init]; 
[dateformatter setDateFormat:@"HH:mm"]; 
dateformatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"ar_EG"]; 
cell.infoLabel.text = [dateFormatter stringFromDate:date]; 

輸出結果是:15:43而不是13:45,因爲它應該是。 任何幫助,將不勝感激。 PS:我在iPhone上運行iOS5/6,Xcode 4.5,並嘗試在模擬器和物理設備上使用。

+1

的ZZZ場以分鐘爲單位,而不是幾小時表示。 –

+0

太棒了!謝謝!這正是爲什麼!我還想知道爲什麼它提前2分鐘顯示日期。 你能告訴我什麼是正確的符號?我嘗試閱讀http://unicode.org/reports/tr35/tr35-4.html#Date_Format_Patterns,但我不確定。 – user1518779

+0

我相信你需要在時間戳的末尾附加一對零,才能正確解析它。 –

回答

0

您需要添加語言環境和時區

[dateFormatter的setLocale:[NSLocale systemLocale]; //你想要的區域設置
[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]]; // Timezone相同

+0

非常感謝,但沒有任何改變,任何其他想法? – user1518779

+0

你可以嘗試使用這個YYYY-MM-dd'T'HH:mm:ssZZZ,大寫y。 –

+0

我只是做了,沒有它不會改變任何東西... – user1518779