iOS时间那点事
来源:互联网 发布:淘宝店铺资质25000元 编辑:程序博客网 时间:2024/05/17 03:28
此文出自:http://my.oschina.net/yongbin45/blog/150114
NSDate
- NSDate对象用来表示一个具体的时间点。
- NSDate是一个类簇,我们所使用的NSDate对象,都是NSDate的私有子类的实体。
- NSDate存储的是GMT时间,使用的时候会根据 当前应用 指定的 时区 进行时间上的增减,以供计算或显示。
可以快速地获取的时间点有:
now (当前时间点)相对于1 January 2001, GMT的时间点相对于1970的时间点distantFuture (不可达到的未来的某个时间点)distantPast (不可达到的过去的某个时间点
根据http://www.gnustep.org/实现的NSDate的版本:
<!-- lang: cpp -->@interface NSDate : NSObject <NSCoding, NSCopying>{ NSTimeInterval _secondsSinceRef;}……- (id) initWithTimeInterval:(NSTimeInterval) secsToBeAdded sinceDate:(NSDate *) anotherDate; 相对于已知的某个时间点- (id) initWithTimeIntervalSinceNow:(NSTimeInterval) secsToBeAdded; 相对于当前时间- (id) initWithTimeIntervalSince1970:(NSTimeInterval)seconds; 相对于1970年1月1日0时0分0秒- (id) initWithTimeIntervalSinceReferenceDate:(NSTimeInterval) secs; 相对于2001年1月1日0时0分0秒……@end
可以看出,NSDate类确实只是一个相对的时间点,NSTimeInterval的单位是秒(s),_secondsSinceRef则说明NSDate对象是相对于ReferenceDate(2001年1月1日0时0分0秒)的一个时间点。
同时,根据Cocoa框架的设计原则,每个类都有一个“指定初始化方法”(指定初始化方法是参数最全,且其他初始化方法都会调用的初始化方法)。http://www.gnustep.org/实现的版本以方法:
<!-- lang: cpp -->- (id) initWithTimeIntervalSinceReferenceDate:(NSTimeInterval) secs;
作为指定初始化方法,也就是说所有的时间点都转化为了相对referenceDate的时间点(时间点都是相对的,因为时间本身就是相对的)。
NSDate中最常用的方法一般是:
<!-- lang: cpp -->NSDate *now = [NSDate date]; // [[NSDate alloc] init]NSDate *dateFromNow = [NSDate dateWithTimeIntervalSinceNow:60];NSDate *dateFromAnotherDate = [[NSDate alloc] initWithTimeInterval:60 sinceDate:dateFromNow];NSTimeInterval timeInterval1 = [now timeIntervalSinceDate:dateFromNow];NSTimeInterval timeInterval2 = [now timeIntervalSinceNow];//-------------------------------------------------------------NSDate *distantPast = [NSDate distantPast]; // 可以表示的最早的时间NSDate *distantFuture = [NSDate distantFuture]; // 可以表示的最远的未来时间NSString *stringDate = @"12/31/9999";NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];[dateFormatter setDateFormat:@"MM/dd/yyyy"];NSDate *dateCheck = [dateFormatter dateFromString:stringDate];NSLog(@"Date = %@", dateCheck);Output:Date = 1999-12-30 16:00:00 +0000*iOS中用NSDate表示的时间只能在distantPast和distantFuture之间!//-------------------------------------------------------------
0 0
- iOS时间那点事
- iOS时间那点事
- iOS时间那点事
- iOS时间那点事--NSDate
- iOS时间那点事--NSDateFormatter
- iOS时间那点事--NSTimeZone
- ios时间那点事--NSLocale
- ios时间那点事--NSCalendar NSDateComponents
- iOS时间那点事 NSCalendar NSDateComponents
- iOS时间那点事--NSCalendar + NSDateComponents
- ios时间那点事--NSCalendar NSDateComponents
- iOS时间那点事 NSCalendar + NSDateComponents
- 【时间加减】那点事
- 【时间工具】那点事
- iOS面试那点事
- IOS 关于分辨率的那点事
- [转载] iOS开发分辨率那点事
- IOS ARC跟block那点事
- 深度学习关键词之—过拟合
- Ural 1091 Tmutarakan Exams (水题 容斥+ 莫比乌斯反演)
- linux中配置phpcms v9 中的sphinx
- Inventor API代码性能优化 - 2
- 按序取出一列表格数据
- iOS时间那点事
- 微信端分享接口
- Qt自带的软件安装包制作工具
- 数据结构之简单四则运算表达式求值8-(栈的实现)
- 值得推荐的C/C++框架和库
- PHP防止SQL注入和XSS攻击
- PHP CURL CURLOPT参数说明
- 软件测试基础知识(一)
- 利用rowid快速在线更新海量数据-批量更新