2013-08-18 53 views
2

我送對回覆了我的時間和日期這樣的Web服務器的一些要求:的iOS - 轉換的時間和日期用戶時區

"at 18:58 of 05/08/2012" 

我能弄清楚如何獲得時間和日期2 NSStrings(18:58,05/08/2012)。 請注意,服務器的時區爲+00:00。我想要完成的是根據用戶的位置呈現這段時間。因此,例如,如果服務器的回覆是2012年8月5日23:30,並且用戶的時區是+2:00,我想在2012年6月8日1:30提供給他。 任何想法?

回答

10

你應該這樣做以下方式:

1)首先,創建一個NSDateFormatter得到的NSDate從服務器發送:

NSDateFormatter *serverFormatter = [[NSDateFormatter alloc] init]; 
[serverFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]]; 
[serverFormatter setDateFormat:@"'at 'HH:mm' of 'dd/MM/yyyy"]; 

Apple docs注意到Unicode格式字符串格式,則應在格式字符串之間用撇號('')括起文本文本。

2)將字符串(考慮它被定義爲theString)到NSDate

NSDate *theDate = [serverFormatter dateFromString:theString]; 

3)創建一個NSDateFormattertheDate轉換爲用戶:

NSDateFormatter *userFormatter = [[NSDateFormatter alloc] init]; 
[userFormatter setDateFormat:@"HH:mm dd/MM/yyyy"]; 
[userFormatter setTimeZone:[NSTimeZone localTimeZone]]; 

3)從userFormatter獲取字符串:

NSString *dateConverted = [userFormatter stringFromDate:theDate]; 
+0

我做了什麼,你寫到這裏,我得到: – BlackM

+0

哦,我補充說: 「HH毫米DD/MM/YYYY」 的結果誤將「在該行'[userFormatter setDateFormat:.... ]'。編輯並更正,再次獲取此行。 –

+0

好的,現在顯示完全相同的時間。我在這裏錯過了什麼? – BlackM

0

而不是從服務器獲取絕對時間從服務器獲取時間戳並將其轉換爲在客戶端的日期,爲此,您不必更改時區。

相關問題