OC中的关于日期处理方法应用NSDate、NSDateFormatter
NSDate用法
什么是NSDate?
NSDate是用于处理我们应用中需要得到一个时间点的情况,比如说:得到当前时间、明天时间、昨天的某个时间,某一年的某一天…….这个时间点可以我们自己创建NSDate,也可以通过方法来获取。
为什么要用NSDate?
使用时间点能够获取类能够在很多应用中的判断:比如说登陆超时判断、时间点耦合判断等。可以设置某一个时间点发生某件事情。
如何用NSDate?
获取时间点
(1)当前时间获取
NSDate *dateDate=[NSDate date];
NSLog(@"%@",dateDate);
(2)明天此时此刻
NSDate*dateTomorrow=[dateDate dateByAddingTimeInterval:24*60*60];
NSLog(@"%@",dateTomorrow);
(3)距离now的某段时间后
NSDate *dateAfterInterval=[dateDate dateByAddingTimeInterval:50];
(4)1970年的参考日期点
NSTimeIntervaldateNumber=[dateTomorrow timeIntervalSince1970];
NSLog(@"%f",dateNumber);// 结果:1404386148.978354,很多时候利用这个方法来获取一个时间戳,当我们在程序中看见类似的10位数字时候,可以联想是否可能是时间戳?
(5)1990年的参考日期点
NSTimeIntervaldateNumber1=[dateDate timeIntervalSinceReferenceDate];
NSLog(@"%f",dateNumber1);//结果:425992820.456165
(6)日期之间的相互比较(compare)
相等日期 isEqualTo-----BOOL
较早日期 earlier----------BOOL
较晚日期 later-------------BOOL
compare日期---------------NScomparisonResult
NSLog(@"******%ld*******",[dateDate compare:dateTomorrow]);//输出值-1
获取时间段
可以获得两个时间点之间的时间间隔段,返回值为NSTimeInterval(double型)。
这里不在赘述。
注意:在有关NSDate(时间)的打印中,尽管系统记录的时间是我们需要的北京时间,但是打印出来的始终是格林尼治时间。如果需要输出北京时间,可以将该NSDate更改为NSString格式再打印。
NSDateFormatter用法
什么是NSDateFormatter?
这个类是用来处理日期与字符串之间转换的方法。
为什么要用NSDateFormatter
在很多时候,我们需要某个确定的时间点,但是NSDate仅仅提供了如何通过几个特殊时间点,对于比较一般化的时间点,需要我们去计算时间段(TimeInterval),然后再获取我们需要的时间点。这里计算的过程相对较为耗时,这样我们提供了一个可以手写一个字符串,然后将字符串直接转化为日期的类,方便快捷。
如何用NSDateFormatter?
NSDateFormatter*format=[[NSDateFormatter alloc] init];//日期转换器初始化并分配堆空间。
[format setDateFormat:@"YYYYMMddHHmmss"];//
NSDate *date111=[formatdateFromString:@"20141212 030709"];//字符串转换为日期。
NSLog(@"%@",date111);//打印出来的日期是格林尼治时间。
NSString *dateStr=[formatstringFromDate:date111];
NSLog(@"%@",dateStr);// 打印出来的日期是我们输入的时间。