前言
@interface NSTimeZone : NSObject <NSCopying, NSSecureCoding>
1、NSTimeZone 時區的創建
NSTimeZone *zone1 = [[NSTimeZone alloc] init];
// 根據時區名稱創建
NSTimeZone *zone2 = [[NSTimeZone alloc] initWithName:@"America/Chicago"];
NSTimeZone *zone3 = [NSTimeZone timeZoneWithName:@"America/Chicago"];
// 根據時區縮寫創建
NSTimeZone *zone4 = [NSTimeZone timeZoneWithAbbreviation:@"EST"];
// 根據零時區的秒數偏移量創建
NSTimeZone *zone5 = [NSTimeZone timeZoneForSecondsFromGMT:28800];
2、NSTimeZone 時區的設置
// 設置默認的時區
[NSTimeZone setDefaultTimeZone:[[NSTimeZone alloc] initWithName:@"America/Chicago"]];
NSTimeZone *systemZone = [NSTimeZone systemTimeZone];
// 本地時區可以被修改,而系統時區不能修改。
NSTimeZone *localZone = [NSTimeZone localTimeZone];
NSTimeZone *defaultZone = [NSTimeZone defaultTimeZone];
// NSCalendar 設置時區
/*
設置時區,設置為 GMT+8,即北京時間(+8)
*/
NSCalendar *calendar = [NSCalendar currentCalendar];
[calendar setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"CET"]];
[calendar setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:+28800]];
// NSDateFormatter 設置時區
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
// 設置時區,設置為 GMT
[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
3、NSTimeZone 時區的獲取
// 獲取系統時區
NSTimeZone *zone1 = [NSTimeZone systemTimeZone];
// 獲取本地時區
NSTimeZone *zone2 = [NSTimeZone localTimeZone];
// 獲取默認時區
NSTimeZone *zone3 = [NSTimeZone defaultTimeZone];
4、獲取時區的名稱
// 獲取所有已知的時區名稱
NSArray *zoneNames = [NSTimeZone knownTimeZoneNames];
NSTimeZone *zone = [NSTimeZone localTimeZone];
// 獲取指定時區的名稱
NSString *strZoneName = [zone name];
5、獲取時區的縮寫
// 獲取所有已知的時區縮寫
NSDictionary *zoneAbbreviations = [NSTimeZone abbreviationDictionary];
NSTimeZone *zone = [NSTimeZone localTimeZone];
// 獲取指定時區的縮寫
NSString *zoneAbbreviation1 = [zone abbreviation];
// 獲取指定時間所在時區名稱縮寫
NSString *zoneAbbreviation2 = [zone abbreviationForDate:[NSDate date]];
6、獲取與零時區的間隔秒數
NSTimeZone *zone = [NSTimeZone localTimeZone];
// 獲取當前時區與零時區的間隔秒數
NSInteger seconds1 = [zone secondsFromGMT];
// 獲取指定時間所在時區與零時區的間隔秒數
NSInteger seconds2 = [zone secondsFromGMTForDate:[NSDate date]];
7、時區差值轉換
// 得到當前時間(世界標准時間 UTC/GMT)
NSDate *date = [NSDate date];
// 設置系統時區為本地時區
NSTimeZone *zone = [NSTimeZone systemTimeZone];
// 計算本地時區與 GMT 時區的時間差
NSInteger interval = [zone secondsFromGMT];
// 在 GMT 時間基礎上追加時間差值,得到本地時間
date = [date dateByAddingTimeInterval:interval];