NSDate 那点事
来源:互联网 发布:电视围棋直播软件 编辑:程序博客网 时间:2024/06/08 12:01
转载自:http://my.oschina.net/yongbin45/blog/150114
- NSDate对象用来表示一个具体的时间点。
- NSDate是一个类簇,我们所使用的NSDate对象,都是NSDate的私有子类的实体。
- NSDate存储的是GMT时间,使用的时候会根据 当前应用 指定的 时区 进行时间上的增减,以供计算或显示。
可以快速地获取的时间点有:
1
now (当前时间点)
2
相对于
1
January
2001
, GMT的时间点
3
相对于
1970
的时间点
4
distantFuture (不可达到的未来的某个时间点)
5
distantPast (不可达到的过去的某个时间点
根据http://www.gnustep.org/实现的NSDate的版本:
01
@interface NSDate : NSObject <NSCoding, NSCopying>
02
{
03
NSTimeInterval _secondsSinceRef;
04
}
05
06
……
07
08
- (id) initWithTimeInterval:(NSTimeInterval) secsToBeAdded
09
sinceDate:(NSDate *) anotherDate; 相对于已知的某个时间点
10
- (id) initWithTimeIntervalSinceNow:(NSTimeInterval) secsToBeAdded; 相对于当前时间
11
- (id) initWithTimeIntervalSince1970:(NSTimeInterval)seconds; 相对于1970年1月1日0时0分0秒
12
- (id) initWithTimeIntervalSinceReferenceDate:(NSTimeInterval) secs; 相对于2001年1月1日0时0分0秒
13
14
……
15
16
@end
可以看出,NSDate类确实只是一个相对的时间点,NSTimeInterval的单位是秒(s),_secondsSinceRef则说明NSDate对象是相对于ReferenceDate(2001年1月1日0时0分0秒)的一个时间点。
同时,根据Cocoa框架的设计原则,每个类都有一个“指定初始化方法”(指定初始化方法是参数最全,且其他初始化方法都会调用的初始化方法)。http://www.gnustep.org/实现的版本以方法:
1
- (id) initWithTimeIntervalSinceReferenceDate:(NSTimeInterval) secs;
作为指定初始化方法,也就是说所有的时间点都转化为了相对referenceDate的时间点(时间点都是相对的,因为时间本身就是相对的)。
NSDate中最常用的方法一般是:
01
NSDate *now = [NSDate date];
// [[NSDate alloc] init]
02
NSDate *dateFromNow = [NSDate dateWithTimeIntervalSinceNow:60];
03
NSDate *dateFromAnotherDate = [[NSDate alloc] initWithTimeInterval:60 sinceDate:dateFromNow];
04
05
NSTimeInterval timeInterval1 = [now timeIntervalSinceDate:dateFromNow];
06
NSTimeInterval timeInterval2 = [now timeIntervalSinceNow];
07
08
09
10
//-------------------------------------------------------------
11
NSDate *distantPast = [NSDate distantPast];
// 可以表示的最早的时间
12
NSDate *distantFuture = [NSDate distantFuture];
// 可以表示的最远的未来时间
13
14
NSString *stringDate = @
"12/31/9999"
;
15
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
16
[dateFormatter setDateFormat:@
"MM/dd/yyyy"
];
17
NSDate *dateCheck = [dateFormatter dateFromString:stringDate];
18
NSLog(@
"Date = %@"
, dateCheck);
19
20
Output:
21
Date = 1999-12-30 16:00:00 +0000
22
23
*iOS中用NSDate表示的时间只能在distantPast和distantFuture之间!
0 0
- NSDate 那点事
- iOS时间那点事--NSDate
- NSDate与时间戳的那点事
- NSDate那点事(时间处理封装)
- 面试那点事
- 公司那点事
- 编程那点事!!
- 公务员那点事
- 毕业那点事
- JVM 那点事
- C++那点事
- 【粗心】那点事
- 【春运】那点事
- 内存那点事
- 程序员那点事
- Ext那点事
- Ext那点事
- 学习那点事
- 关于使用.Net4的web应用在mono上呈现目录结构的解决办法
- 用减奇数次数的方法,求一个数的近似平方根
- 如果看了这篇文章你还不懂傅里叶变换,那就过来掐死我吧
- With KEY & With Table KEY 的使用
- 编译插件到cocosbuilder工程中
- NSDate 那点事
- error C4430: missing type specifier - int assumed. Note: C++ does not ...(转)
- socket网络通信
- yuv420sp旋转90度
- 统计数字,字母及其他符号的数量
- Android 通过包名打开其他APP
- Ajax框架,DWR介绍,应用,例子
- bmp图片文件的操作 旋转、翻转、放大缩小
- 1到N累加求和