OC中的关于日期处理方法应用NSDate、NSDateFormatter

来源:互联网 发布:伊戈尔·克鲁托伊 知乎 编辑:程序博客网 时间:2024/05/17 23:57

OC中的关于日期处理方法应用NSDate、NSDateFormatter

 

NSDate用法

什么是NSDate

NSDate是用于处理我们应用中需要得到一个时间点的情况,比如说:得到当前时间、明天时间、昨天的某个时间,某一年的某一天…….这个时间点可以我们自己创建NSDate,也可以通过方法来获取。

 

为什么要用NSDate

使用时间点能够获取类能够在很多应用中的判断:比如说登陆超时判断、时间点耦合判断等。可以设置某一个时间点发生某件事情。

 

如何用NSDate

获取时间点

(1)当前时间获取

NSDate *dateDate=[NSDatedate];

NSLog(@"%@",dateDate);

 

(2)明天此时此刻

NSDate*dateTomorrow=[dateDate dateByAddingTimeInterval:24*60*60];

NSLog(@"%@",dateTomorrow);

 

(3)距离now的某段时间后

NSDate *dateAfterInterval=[dateDate dateByAddingTimeInterval:50];

 

 (4)1970年的参考日期点

NSTimeIntervaldateNumber=[dateTomorrowtimeIntervalSince1970];

NSLog(@"%f",dateNumber);//结果:1404386148.978354,很多时候利用这个方法来获取一个时间戳,当我们在程序中看见类似的10位数字时候,可以联想是否可能是时间戳?

 

 (5)1990年的参考日期点

 NSTimeIntervaldateNumber1=[dateDatetimeIntervalSinceReferenceDate];

 NSLog(@"%f",dateNumber1);//结果:425992820.456165

 (6)日期之间的相互比较(compare)

相等日期 isEqualTo-----BOOL

较早日期 earlier----------BOOL

较晚日期 later-------------BOOL

compare日期---------------NScomparisonResult

NSLog(@"******%ld*******",[dateDatecompare:dateTomorrow]);//输出值-1

 

获取时间段

可以获得两个时间点之间的时间间隔段,返回值为NSTimeInterval(double型)。

这里不在赘述。

注意:在有关NSDate(时间)的打印中,尽管系统记录的时间是我们需要的北京时间,但是打印出来的始终是格林尼治时间。如果需要输出北京时间,可以将该NSDate更改为NSString格式再打印。

 

NSDateFormatter用法

什么是NSDateFormatter

这个类是用来处理日期与字符串之间转换的方法。

为什么要用NSDateFormatter

在很多时候,我们需要某个确定的时间点,但是NSDate仅仅提供了如何通过几个特殊时间点,对于比较一般化的时间点,需要我们去计算时间段(TimeInterval),然后再获取我们需要的时间点。这里计算的过程相对较为耗时,这样我们提供了一个可以手写一个字符串,然后将字符串直接转化为日期的类,方便快捷。

如何用NSDateFormatter

NSDateFormatter*format=[[NSDateFormatteralloc] init];//日期转换器初始化并分配堆空间。

[format setDateFormat:@"YYYYMMddHHmmss"];//

NSDate *date111=[formatdateFromString:@"20141212 030709"];//字符串转换为日期。

NSLog(@"%@",date111);//打印出来的日期是格林尼治时间。

NSString *dateStr=[formatstringFromDate:date111];

NSLog(@"%@",dateStr);// 打印出来的日期是我们输入的时间。

0 0