我知道如何獲得已知時區的列表:[NSTimeZone knownTimeZoneNames]
。如何從knownTimeZoneNames獲得每個時區的GMT值
但此方法只返回時區名稱(如「非洲/阿比讓」)。
如何從該數組中獲取每個已知時區的GMT值(如GMT+3
或GMT-7
)?
我知道如何獲得已知時區的列表:[NSTimeZone knownTimeZoneNames]
。如何從knownTimeZoneNames獲得每個時區的GMT值
但此方法只返回時區名稱(如「非洲/阿比讓」)。
如何從該數組中獲取每個已知時區的GMT值(如GMT+3
或GMT-7
)?
在一般情況下,每個時區的名稱創建一個NSTimeZone
實例,然後從每個實例得到secondsFromGMT
屬性:
for (NSString *name in [NSTimeZone knownTimeZoneNames]) {
NSTimeZone *tz = [NSTimeZone timeZoneWithName:name];
NSInteger gmtOffset = tz.secondsFromGMT;
}
唯一懸而未決的問題會從秒轉換爲小時或幾小時/分鐘,這不應該太難。也許默認[NSTimeZone description]
會返回正確的信息?
您還可以使用方法timeZoneForSecondsFromGMT
NSTimeZone *timeZone = [NSTimeZone timeZoneForSecondsFromGMT:secondsFromGMT];
NSMutableString *name = [NSMutableString stringWithString:timeZone.name];
if (! [name isEqualToString:@"GMT"])
{
[name insertString:@":" atIndex:6];
}
return [NSString stringWithString:name];
輸出將被@"GMT+03:00"
。你不需要從幾小時和幾分鐘就構建它。
非常感謝。我現在通過閱讀蘋果文檔發現了相同的方式))) –
只要記住,結果並不總是相同的。 :) –