我有麻煩時區,帶有日期字符串的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。
你的第二塊中的代碼需要指定GMT-10'的'一個時區,因爲該字符串值是從'GMT-10 '時區,而不是'GMT'時區。另外,'dateFromString:'的結果是'NSDate',而不是'NSString'。 – rmaddy
'[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:[[NSTimeZone localTimeZone] abbreviation]]];'?!您正在使用當前時區來獲取其縮寫以加載時區。如何'[formatter setTimeZone:[NSTimeZone localTimeZone]];'。 – Fogmeister
@Fogmeister啊不錯,謝謝,那麼這個問題呢?我將格林威治標準時間轉換爲格林尼治標準時間10,所以爲了恢復格林尼治標準時間10格林威治標準時間,但結果是不同的,我需要使用格林尼治標準時間10,就像rmaddy說 –