OC语言NSDate的使用以及类的扩展

来源:互联网 发布:网络兼职被骗报警程序 编辑:程序博客网 时间:2024/05/21 01:54

今天的课程的主要内容是关于NSDate、Category、Extension的使用

一、NSDate

NSDate是用于处理日期和时间的基础类,封装了某一给定的时刻。

NSDate *nowtime = [ NSDate date ]; //获取系统当前时间

NSLog(@"当前时间是%@",nowtime);

注意获取系统当前时间是格林尼治时间,也就是0时区的时间和日期。北京是东8区,与0时区相差8个区域,即8个小时,一个时区是1个小时。

//如何表达中国时间

NSDate *chinatime =  [ NSDate alloc] initWithTimeIntervalSinceNow:8*60*60];

NSLog(@"当前的中国时间是%@",chinatime);

//initWithTimeIntervalSinceNow表示从这个初始化方法传入一个时间段,计算当前0时区时间距离这个时间段的时间间隔的时间。将这个时间段设置成8*60*60刚好是从北京时区到0时区的所有以秒为单位的时间间隔。

//为了方便使用,我们可以使用宏定义的方法如图所示

将宏定义写在main函数的上方,便于我们使用,同时代码可以写成

NSDate *chinatime =  [ NSDate alloc] initWithTimeIntervalSinceNow:BeiJing];

NSLog(@"当前的中国时间是%@",chinatime);//输出结果为当前的北京时间

同理,我们利用宏定义也可以写出明天和昨天的当前时间

#define Yesterday -24*60*60
#define Tomorrow  24*60*60

//明天的当前时间

NSDate *tomtime = [[NSDate alloc]initWithTimeIntervalSinceNow:Tomorrow]

NSLog(@"tomtime = %@",tomtime);

//昨天的当前时间

NSDate *yestime = [[NSDate alloc]initWithTimeIntervalSinceNow:Yesterday]

NSLog(@"yestime = %@",yestime);

//求从昨天到明天的时间差值

NSTimeInterval intertime = [tomtime timeIntervalSinceDate:yestime] ;

NSLog(@"从昨天到明天的时间差值是%.4f",intertime);

//typedef double NSTimeInterval; NSTimeInterval是一个用typedef定义的新的double类型的别名,用以表示以秒为单位的时间间隔。timeIntervalSinceDate:该方法表示从前个时间点到后一个时间点的时间间隔

练习:随意确定一个时间,求从当前时间到这个时间的时间间隔是否小于60秒,如果是输出“刚刚”,如果时间间隔在60秒和3600秒之间,就输出多少分钟前,如果大于3600秒就输出多少小时前。

NSDate *fixedtime = [NSDate alloc]initWithTimeIntervalSinceNow:BeiJing];

NSDate *fixedtime1 = [[NSDate alloc]initWithTimeIntervalSinceNow:BeiJing+Tomorrow];

NSTimeInterval *time = [fixedtime1 timeIntervalSinceNow: fiexdtime];//timeIntervalSinceNow:此处只能是从明天到现在的时间差,不能是从现在到明天的时间差,否则,在控制台输出“刚刚”

if(time <  60){

NSLog(@"刚刚");

}

//求到1970-01-01 00:00:00多少秒之后的时间

NSDate *time = [[NSDate alloc]initWithTimeIntervalSince1970:60*60];

NSLog(@" %@ ",time);//控制台输出是1970-01-01 10:00:00

计算从现在间隔指定时间段之后的日期

NSDate  *time = [NSDate dateWithTimeInterval:2*Tomorrow sinceDate:[NSDate date]];

//[NSDate date]是当前系统时间

NSLog(@“当前时间是%@”,[NSDate date]);//输出当前时间

NSLog(@"指定日期是%@",time);//输出指定日期

控制台输出为:

当前时间是2015-11-12 17:05:00

指定日期2015-11-14 17:05:00

设置转化格式

//DateFormatter是iOS的日期格式方法,功能是实现NSString 和 NSDate 的互转

常见的时间格式化字符串如下:

y 年  

M 年中的月份 

d  月份中的天数 

H  一天中的小时数

m  小时中的分钟数

s  分钟中的秒

NSDateFormatter  *fornatter = [[NSDateFormatter alloc] init ];//创建一个NSDateFormatter类型的对象;

在此句也可理解为创建一个空的格式转化器;

[formatter setDateFormat:@"MM-dd-yyyy"];//将转换格式添加到格式转换器中

NSTimeZone *zone1 = [NSTimeZone timezoneWithName:@"Asia/Shanghai"];//创建一个时区的对象;

[formatter setTimeZone: zone1];//在这句中将时区添加到格式转化中

//将NSString类型的日期转换为NSDate的日期

NSDateFormatter *time = [[ NSDateFormatter alloc] init ];

[time setDateFormat:@"yyyy-MM-dd HH:mm:ss" ];

NSString *date=@"1994-10-08 12:00:00";
NSDate *birth=[time dateFromString:date];
NSLog(@"%@",birth);//输出转换后的时间

二、类的扩展

category也叫类目,主要作用是给看不到的源代码(苹果提供的系统类)的类添加方法,category添加的方法会成为原有的类的一部分,从而扩展一个类的新功能

Extension 主要作用是管理类的私有方法。在设计一个类的时候,有些方法需要公开(我们称之为接口),有些方法仅仅是内部使用。Extension的功能是帮我们去管理内部使用的方法(私有方法)

protocol(协议)代理必须遵循协议的方法,也是用来扩展类的方法










0 0
原创粉丝点击