欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

iOS - OC NSTimeZone 时区

最编程 2024-05-08 10:24:38
...

前言

@interface NSTimeZone : NSObject <NSCopying, NSSecureCoding>

NSTimeZone 表示时区信息。

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];