iOS小功能点

NSTimeZone方法属性详细介绍

2020-04-07  本文已影响0人  雪碧童鞋

NSTimeZone时区是一个地理名字,是为了克服各个地区或国家之间在使用时间上的混乱。

1.基本概念:

  1. GMT 0:00 格林威治标准时间; UTC +00:00 校准的全球时间; CCD +08:00 中国标准时间。

  2. 夏时制,英文"DaylightSavingTime"。夏季时将时区内的时间提前(一般为1小时),以节省资源,提高效率。使用夏时制期间,当前时区相对于GMT的时间偏移量会发生变化。在某些应用中可能需要考虑。

  3. 任何时区都以GMT为基准,即,任何NSTimeZone对象所代表的时区都是相对于GMT的,这里的相对性是NSTimeZone中最重要的属性,我们称之为当前时区相对于GMT的偏移量。一旦知道了一个偏移量,便可以确定一个时区。在iOS中,偏移量是以"秒"为单位的.

  4. iOS中的时区表示方法:GMT+0800 GMT-0800。(+:东区 -:西区 08:小时数 00:分钟数)。 GMT+0830就是指比GMT早8小时外加30分钟的时区。

2.初始化方法

// 返回具有给定标识符的时区
+ (nullable instancetype)timeZoneWithName:(NSString *)tzName;
// 返回具有给定标识符的时区,该标识符的数据已使用给定数据进行了初始化
+ (nullable instancetype)timeZoneWithName:(NSString *)tzName data:(nullable NSData *)aData;
// 使用给定的标识符初始化时区
- (nullable instancetype)initWithName:(NSString *)tzName;
// 使用给定的标识符和时区数据初始化时区
- (nullable instancetype)initWithName:(NSString *)tzName data:(nullable NSData *)aData;
// 返回与格林威治标准时间相差给定秒数的时区对象
+ (instancetype)timeZoneForSecondsFromGMT:(NSInteger)seconds;
// 返回由给定缩写标识的时区对象
+ (nullable instancetype)timeZoneWithAbbreviation:(NSString *)abbreviation;

3.分类"属性"和方法:

// 系统当前使用的时区
@property (class, readonly, copy) NSTimeZone *systemTimeZone;
// 清除为systemTimeZone属性缓存的任何时区值
+ (void)resetSystemTimeZone;
// 当前应用的默认时区。
@property (class, copy) NSTimeZone *defaultTimeZone;
// 跟踪当前系统时区的对象
@property (class, readonly, copy) NSTimeZone *localTimeZone;
// 返回一个字符串数组,其中列出了系统已知的所有时区的ID。
@property (class, readonly, copy) NSArray<NSString *> *knownTimeZoneNames;
// 自己设置时区ID
@property (class, copy) NSDictionary<NSString *, NSString *> *abbreviationDictionary;
// 返回一个字典,所有时区ID的简写
+ (NSDictionary<NSString *, NSString *> *)abbreviationDictionary;
// 返回时区数据版本
@property (class, readonly, copy) NSString *timeZoneDataVersion ;
// 当前时间与格林威治标准时间的差,以秒为单位
@property (readonly) NSInteger secondsFromGMT;
// 设置接收时区
@property (nullable, readonly, copy) NSString *abbreviation;
// 是否是夏令时
@property (readonly, getter=isDaylightSavingTime) BOOL daylightSavingTime;
// 夏令时偏移值
@property (readonly) NSTimeInterval daylightSavingTimeOffset; // for current instant
// 下一个夏令时日期
@property (nullable, readonly, copy) NSDate *nextDaylightSavingTimeTransition; // after current instant
// 时区的文字说明,包括名称,缩写,与GMT的时差以及当前是否夏令时
@property (readonly, copy) NSString *description;
// 是否是指定时区
- (BOOL)isEqualToTimeZone:(NSTimeZone *)aTimeZone;
// 返回时区的本地化名称
- (nullable NSString *)localizedName:(NSTimeZoneNameStyle)style locale:(nullable NSLocale *)locale;

4.夏时制方法

// 时区名称
@property (readonly, copy) NSString *name;
 // 时区文件数据
@property (readonly, copy) NSData *data;

/// 夏时制方法
- (NSInteger)secondsFromGMTForDate:(NSDate *)aDate;
- (nullable NSString *)abbreviationForDate:(NSDate *)aDate;
- (BOOL)isDaylightSavingTimeForDate:(NSDate *)aDate;
- (NSTimeInterval)daylightSavingTimeOffsetForDate:(NSDate *)aDate;
- (nullable NSDate *)nextDaylightSavingTimeTransitionAfterDate:(NSDate *)aDate;

不清楚的可以查看苹果官方文档,附:苹果官方文档NSTimeZone链接

上一篇下一篇

猜你喜欢

热点阅读