**時區是一個地理名字,是爲了克服各個地區或國家之間在使用時間上的混亂。安全
第一批spa
// 這個方法的名字很委婉,known一詞說明這是「他」已知的時區的名字。世界各地對本身所在的時區可能都有必定的命名,可是不必定被「他」收錄。例如,中國大陸,只有重慶和上海被收錄了(難道這是中國只使用一個時區的錯誤?!)。使用這個方法得到的時區名字,都是在iOS系統中/usr/share/zoneinfo/目錄中保存時區數據。隨着iOS版本的更新,這裏面的數據會發生變更。固然,要是你的設備越獄了,你能夠手動往該目錄下添加時區文件。
// 時區文件裏面包括了一下內容:
// 當前時區相對於GMT的偏移量(s)
// 當前時區的名字縮寫
// 當前時區是否使「夏時制」時區
// 由於時區文件中包含了"偏移量",因此經過「時區的名稱」能夠指定一個「時區」。
// 時區名稱舉例:
// Africa/Abidjan
// America/New_York
// Asia/Shanghai
// Asia/Hong_Kong
// 越獄的童鞋能夠看出時區的名稱和/usr/share/zoneinfo中的目錄結構基本一一對應。
+(NSArray*)knownTimeZoneNames;
// 獲取全部的時區名稱縮寫
// 名稱縮寫與名稱是一一對應的關係,例如:HKT = "Asia/Hong_Kong";
// 默認狀況下,調用該方法回去/usr/share/zoneinfo目錄下找時區名稱縮寫,可是當使用方法"+ (void)setAbbreviationDictionary:(NSDictionary *)dict;"後,將會只返回剛纔設置的時區名稱縮寫。請看下文的代碼實例!
// 名稱縮寫舉例:
// EST = "America/New_York";
// GMT = GMT;
// GST = "Asia/Dubai";
// HKT = "Asia/Hong_Kong";
+(NSDictionary*)abbreviationDictionary;
第二批.net
// 由時區的名稱得到對應的NSTimeZone對象
// 經過時區名稱能夠得到時區文件,經過時區文件就能夠得到「偏移量」,「名稱縮寫」,「是否使用夏時制」等信息。
+(id)timeZoneWithName:(NSString*)tzName;
// 由時區名稱縮寫得到對應的NSTimeZone對象
// 這裏的時區名稱縮寫有兩種狀況:
// 第一種是上面說的HKT這樣的縮寫,與時區名稱一一對應,經過這樣的縮寫得到的NSTimeZone對象,與使用時區名稱得到得NSTimeZone對象同樣。(大概讀取得是同一個時區文件)
// 第二種是"GMT+0800"這樣格式得縮寫,其實這就是偏移量。經過偏移量在iOS中是不能讀到與之對應得時區文件的,所以就沒法知道「時區名稱」,「名稱縮寫」,「是否使用夏時制」這樣的信息了。默認狀況下,"時區名稱"和"名稱縮寫"都會賦值爲"GMT+0800","是否使用夏時制"則不會設置(默認不使用)。
+(id)timeZoneWithAbbreviation:(NSString*)abbreviation;
// 由偏移量得到對應的NSTimeZone對象
// 只說一點:經過偏移量得到的NSTimeZone對象的「市區名稱」,「名稱縮寫」都會賦值爲"GMT+0800","是否使用夏時制"則不會設置(默認不使用)。
// 注意!!!!該方法不作參數的範圍檢查!!!
+(id)timeZoneForSecondsFromGMT:(NSInteger)seconds;// 不作安全性檢查
// 當前時區與GMT的偏移量,以秒爲單位 可經過方法"- (NSInteger)secondsFromGMT;"獲取,中國標準時區的偏移量爲(8*60*60)。
// 這是NSTimeZone類中最基本的屬性,相似於NSDate中的_secondsSinceRef屬性。
// 其餘的屬性都是爲了豐富NSTimeZone,以實現offset與具體的地理位置以及與時區相關的其餘信息的綁定。
// 對應方法:- (NSInteger)secondsFromGMT;
int offset;
// 時區的名稱,
// 對應方法:- (NSString *)name;
NSString*_name;
// 時區名稱縮寫
// 對應方法:- (NSString *)abbreviation;
NSString*abbrev;
// 時區文件數據
// 對應方法:- (NSData *)data;
NSData*_data;
// 時區是否使用夏時制
// 對應方法:- (BOOL)isDaylightSavingTime;
BOOL is_dst;