2013-10-17 39 views
0

我有麻煩時區,帶有日期字符串的NSString的時區是什麼?

所以這裏的問題是:

我有日期GMT

2013年10月18日00:00:00 +0000

我將其轉換爲GMT-10

[formatter setDateFormat:@"dd/MM/yyyy hh:mm a"]; 
[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT-10"]]; 
NSString *minusTenGMT = [formatter stringFromDate:date]; 

17/10/2013 02:00 PM

它給了我一個字符串:17/10/2013 02:00 PM

所以基本上minusTenGMT是一個字符串日期

字符串

如果我想獲取minusTenGMT的GMT值。我應該只是扭轉過程

[formatter setDateFormat:@"dd/MM/yyyy hh:mm a"]; 
[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]]; 
NSDate *origDate = [formatter dateFromString:minusTenGMT]; 

但問題是,這樣做的結果是

二○一三年十月一十八日08:00:00 +0000以比較的一部開拓創新日期:2013- 10-18 00:00:00 +0000

,根據我搜索的字符串的時區將回到格林威治標準時間?發生什麼事?。

但是,如果我不使用GMT縮寫,我用我的本地時區

[formatter setDateFormat:@"dd/MM/yyyy hh:mm a"]; 
[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:[[NSTimeZone localTimeZone] abbreviation]]]; 
NSDate *origDate = [formatter dateFromString:minusTenGMT]; 

其結果是2013年10月18日00:00:00 +0000完全一樣的一部開拓創新。

我的本地是格林威治標準時間10,我甚至嘗試改變我的位置通過ios模擬器和系統。他們都回到原來的地方使用(這是正確的)。但如果格林尼治標準時間不同,他們會給出不同的結果

有人可以告訴我發生了什麼事嗎?我想知道爲什麼它會使用我自己的時區而不是日期的原始時區。

在此先感謝:D。

編輯:修正了錯字。

困擾我的事情是爲什麼我應該在轉換回GMT時使用GMT-10?

還是我太笨了? 我使用GMT-10格式來獲得GMT-10。

所以要從格林威治標準時間10格林威治標準時間,我應該使用GMT格式,但它不工作,我需要使用格林尼治標準時間10格式來獲得GMT。

+0

你的第二塊中的代碼需要指定GMT-10'的'一個時區,因爲該字符串值是從'GMT-10 '時區,而不是'GMT'時區。另外,'dateFromString:'的結果是'NSDate',而不是'NSString'。 – rmaddy

+0

'[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:[[NSTimeZone localTimeZone] abbreviation]]];'?!您正在使用當前時區來獲取其縮寫以加載時區。如何'[formatter setTimeZone:[NSTimeZone localTimeZone]];'。 – Fogmeister

+0

@Fogmeister啊不錯,謝謝,那麼這個問題呢?我將格林威治標準時間轉換爲格林尼治標準時間10,所以爲了恢復格林尼治標準時間10格林威治標準時間,但結果是不同的,我需要使用格林尼治標準時間10,就像rmaddy說 –

回答

0

我rmaddy同意的請嘗試以下,包括該行: -

formatter setDateFormat:@"dd/MM/yyyy hh:mm a"]; 
[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:[[NSTimeZone localTimeZone] abbreviation]]]; 
NSString *minusTenGMT = [formatter stringFromDate:date];// this line you need to include for converting 
NSDate *origDate = [formatter dateFromString:minusTenGMT]; 
+0

'origDate'需要是'NSDate',而不是'NSString'。 – rmaddy

+0

謝謝rmaddy我沒有注意到因此糾正了相同的問題:) –

+0

yeh這只是一個錯字。但結果是困擾我的事情。檢查主要問題中的評論 –

相關問題