NSDate
NSDate表示公历(阳历)的格林尼治(G.M.T.)时间。
初始化方法
- - (instancetype)init
默认的初始化方法,返回当前时间,也可以直接调用+ (instancetype)date方法
1 | NSDate *date = [[NSDate alloc] init]; |
log信息如下:
2017-03-24 01:47:29 +0000
打印的时间是格林尼治标准时间,不是我们所在的东八区时间。
- - (instancetype)initWithTimeIntervalSinceNow:(NSTimeInterval)secs
以当前时间的偏移秒数来初始化,也可以直接调用+ (instancetype)dateWithTimeIntervalSinceNow:(NSTimeInterval)secs方法
1 | NSDate *date = [[NSDate alloc] init]; |
log信息如下:
2017-03-24 02:11:37 +0000 –> 2017-03-24 02:10:09 +0000
- - (instancetype)initWithTimeIntervalSince1970:(NSTimeInterval)secs
以1970-01-01 00:00:00时间的偏移秒数来初始化,也可以直接调用+ (instancetype)dateWithTimeIntervalSince1970:(NSTimeInterval)secs
1 | NSDate *date = [[NSDate alloc] initWithTimeIntervalSince1970:-20]; |
log信息如下:
1969-12-31 23:59:40 +0000
- - (instancetype)initWithTimeIntervalSinceReferenceDate:(NSTimeInterval)ti
以2001-01-01 00:00:00时间的偏移秒数来初始化,也可以直接调用+ (instancetype)dateWithTimeIntervalSinceReferenceDate:(NSTimeInterval)ti;
1 | NSDate *date = [[NSDate alloc] initWithTimeIntervalSinceReferenceDate:20]; |
log信息如下:
2001-01-01 00:00:20 +0000
- - (instancetype)initWithTimeInterval:(NSTimeInterval)secsToBeAdded sinceDate:(NSDate *)date
以参数date基准时间的偏移秒数来初始化,也可以直接调用+ (instancetype)dateWithTimeInterval:(NSTimeInterval)secsToBeAdded sinceDate:(NSDate *)date
1 | NSDate *currentDate = [[NSDate alloc] initWithTimeIntervalSince1970:20]; |
log信息如下:
1970-01-01 00:00:20 +0000
1970-01-01 00:00:40 +0000
- - (instancetype)dateByAddingTimeInterval:(NSTimeInterval)ti
返回以NSDate对象为基准,偏移多少秒后得到的新NSDate对象。与- (instancetype)initWithTimeInterval:(NSTimeInterval)secsToBeAdded sinceDate:(NSDate *)date方法相似。
1 | NSDate *currentDate = [[NSDate alloc] initWithTimeIntervalSince1970:20]; |
log信息如下:
1970-01-01 00:00:20 +0000
1970-01-01 00:00:40 +0000
- +(NSDate)distantPast与+(NSDate)distantFuture
这两个类方法,分别返回一个极早的时间点和一个极晚的时间点。
1 | NSDate *PastDate = [NSDate distantPast]; |
log信息如下:
0000-12-30 00:00:00 +0000 –> 4001-01-01 00:00:00 +0000
常用方法
- - (BOOL)isEqualToDate:(NSDate *)otherDate
将当前日期对象与参数传递的日期对象进行比较,根据是否相同返回BOOL值
1 | NSDate *firstDate = [[NSDate alloc] initWithTimeIntervalSince1970:20]; |
log信息如下:
NO
- - (NSDate *)earlierDate:(NSDate *)anotherDate方法与- (NSDate *)laterDate:(NSDate *)anotherDate方法
两个日期比较,返回较早/较晚的那个日期对象。
1 | NSDate *firstDate = [[NSDate alloc] initWithTimeIntervalSince1970:20]; |
- - (NSComparisonResult)compare:(NSDate *)other
比较两个日期对象的大小,返回值是NSComparisonResult枚举类型。
{NSOrderedAscending (升序), NSOrderedSame(相同) ,NSOrderedDescending(降序)}
1 | NSDate *firstDate = [[NSDate alloc] initWithTimeIntervalSince1970:20]; |
- - (NSTimeInterval)timeIntervalSince1970
- - (NSTimeInterval)timeIntervalSinceReferenceDate
- - (NSTimeInterval)timeIntervalSinceNow
- - (NSTimeInterval)timeIntervalSinceDate:(NSDate *)anotherDate
返回当前对象时间与1970-01-01 00:00:00的相隔秒数
返回当前对象时间与2001-01-01 00:00:00的相隔秒数
返回当前时间对象与现在系统时间的相隔秒数
返回当前对象时间与参数传递的对象时间的相隔秒数
1 | NSDate *currentDate = [[NSDate alloc] initWithTimeIntervalSinceNow:-20]; |
log信息如下:
-20.000006+++1490326647.182058+++512019447.182058+++-20.000003
NSTimeZone
NSTimeZone表示时区信息。
iOS中的时区表示方法:GMT+0800,GMT-0800 (+:东区,-:西区,08:小时数,00:分钟数)。
GMT+0800 表示比GMT早8小时0分钟的时区。
初始化方法
- - (nullable instancetype)initWithName:(NSString *)tzName
根据时区名称初始化,返回一个时区对象,也可以直接调用+ (nullable instancetype)timeZoneWithName:(NSString *)tzName。
1 | NSTimeZone *zone = [[NSTimeZone alloc] initWithName:@"Asia/Shanghai"]; |
log信息如下:
Asia/Shanghai (GMT+8) offset 28800
时区名称也可以以GMT+0800形式设置。例如[NSTimeZone timeZoneWithName:@”GMT+0800”];
- + (NSArray *)knownTimeZoneNames
返回所有的时区名称。
1 | NSArray *timeZoneNames = [NSTimeZone knownTimeZoneNames]; |
log信息如下:
“Africa/Abidjan”,
“Africa/Accra”,
“Africa/Addis_Ababa”,
“Africa/Algiers”,
… 等等
- + (nullable instancetype)timeZoneWithAbbreviation:(NSString *)abbreviation
根据时区名称缩写初始化,例如HKT(香港标准时间)
1 | NSTimeZone *zone = [NSTimeZone timeZoneWithAbbreviation:@"HKT"]; |
log信息如下:
Asia/Hong_Kong (GMT+8) offset 28800
时区名称也可以以GMT+0800形式设置。例如[NSTimeZone timeZoneWithAbbreviation:@”GMT+0800”];
- + (NSDictionary *)abbreviationDictionary
返回所有的时区名称缩写。
1 | NSDictionary *dict = [NSTimeZone abbreviationDictionary]; |
log信息如下:
ADT = “America/Halifax”;
AKDT = “America/Juneau”;
AKST = “America/Juneau”;
… 等等
常用方法
- + (NSTimeZone *)systemTimeZone
- + (NSTimeZone *)localTimeZone
- + (NSTimeZone *)defaultTimeZone
返回系统时区
返回本地时区
返回默认时区,它与以上二者的区别在于,默认时区可以修改,本地和系统时区不能修改。
1 | NSTimeZone *localZone = [NSTimeZone localTimeZone]; |
log信息如下:
Local Time Zone (Asia/Shanghai (GMT+8) offset 28800) –>
Asia/Shanghai (GMT+8) offset 28800 –>
America/New_York (EST) offset -18000
- + (id)timeZoneForSecondsFromGMT:(NSInteger)seconds
根据零时区的秒数偏移返回一个新时区对象
1 | NSTimeZone *zone = [NSTimeZone timeZoneForSecondsFromGMT:28800]; |
log信息如下:
GMT+0800 (GMT+8) offset 28800
为东八区
- *- (NSString \)name **
- - (NSString *)abbreviation
返回时区对象的名称
返回时区对象的缩写
1 | NSTimeZone *zone = [NSTimeZone localTimeZone]; |
log信息如下:
name is Asia/Shanghai
abbreviation is GMT+8
- - (NSInteger)secondsFromGMT
得到当前时区与零时区的间隔秒数
1 | NSTimeZone *zone = [NSTimeZone systemTimeZone]; |
log信息如下:
28800
NSLocale
NSLocale类的主要作用是用来封装本地化相关的各种信息,包括语言,货币类型,数字,日期格式等等。
初始化方法
- - (instancetype)initWithLocaleIdentifier:(NSString *)string
用本地标示符初始本地化信息,例如zh_CN标示中国大陆
1 | NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"]; |
log信息如下:
zh_CN
- + (NSArray *)availableLocaleIdentifiers
返回所有的可用标识符。
1 | NSArray *availableLocaleIdentifiers = [NSLocale availableLocaleIdentifiers]; |
log信息如下:
eu,
“hr_BA”,
“en_CM”,
…
ast,
“en_SZ”,
“he_IL”,
…等等
常用方法
- + (id)currentLocale
- + (id)autoupdatingCurrentLocale
返回当前客户端的本地化信息
1 | NSLocale *locale = [NSLocale currentLocale]; |
log信息如下:
en_US
- [NSLocale ISOCountryCodes]
获取所有已知合法的ISO国家代码数组列表
- [NSLocale ISOCurrencyCodes]
获取所有已知合法的ISO货币代码数组列表
- [NSLocale ISOLanguageCodes]
获取所有已知合法的ISO语言代码数组列表
- -(NSStrng *) currencySymbol
返回当前货币符号
1 | NSLocale *locale = [NSLocale currentLocale]; |
log信息如下:
$
- + (NSLocaleLanguageDirection)lineDirectionForLanguage:
获取当前语言的排版方向
- + (NSLocaleLanguageDirection)characterDirectionForLanguage:
获取当前语言的字符方向
- - (NSString *)displayNameForKey:(id)key value:(id)value
以本地化方式获取国际化信息的显示名称
1 | NSArray * availableLocaleIdentifiers = [NSLocale availableLocaleIdentifiers]; |
log信息如下:
eu–巴斯克语
hr_BA–克罗地亚语(波斯尼亚和黑塞哥维那)
en_CM–英语(喀麦隆)
en_BI–英语(布隆迪)
en_AE–英语(阿拉伯联合酋长国)
…等等
- 监听用户本地化设置的消息
1 | [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(localChangedHandler:) name:NSCurrentLocaleDidChangeNotification object:nil]; |