0
我正在格式化日期字符串用下面的代碼後:鬆動1小時格式化日期字符串
,這是日期字符串的格式:2013-10-08T20:30:00 + 03:00
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4];
dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[dateFormatter setDateFormat:@"EEEE"];
NSDateFormatter *formmatter = [[NSDateFormatter alloc] init];
formmatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:SSSZZZ";
NSString *dataString = [meetingData objectForKey:@"start"];
if (![dataString isKindOfClass:[NSNull class]]) {
NSMutableString *mutableDate = [dataString mutableCopy];
[mutableDate deleteCharactersInRange:NSMakeRange(mutableDate.length - 3, 1)];
NSDate *gmtDate = [formmatter dateFromString:mutableDate];
NSDateFormatter *HHMM_Fromatter = [[NSDateFormatter alloc] init];
[HHMM_Fromatter setDateFormat:@"HH:mm"];
self.meetingTime = checkTheObject([HHMM_Fromatter stringFromDate:gmtDate]);
self.meetingDay = checkTheObject([dateFormatter stringFromDate:gmtDate]);
}
輸出是self.meetingTime
:19:30 和self.meetingDay
是好的,爲什麼我失去1小時?
但我認爲+03:00(時區)是動態的,來自服務器,我該如何處理? –
將兩者設置爲en_US後,找到輸出相同 –
@orazran當然,您必須解析從服務器獲取的全部時間字符串,包括時區。您必須正確設置格式器才能解析時區部分。由此產生的'NSDate'將始終是通用的:在這個時間點的通用表示中,沒有語言環境信息。 –