NSDate :
NSDate是Cocoa中用于处理日期和时间的基础类,封装了某一给定的时刻
*/
//北京是东八区,与0时区相差八个小时(一个时区就是一个小时)
//获取系统当前时间,不过获取的时间是格林尼治标准时间,也就是0时区的时间和日期
// NSDate *nowdate = [NSDate date];
// NSLog(@"nowdate = %@",nowdate);
NSTimeInterval是一个用typedef定义的一个新的double类型的别名,用来表示以秒为单位的时间间隔
//获取系统当前中国时间
NSDate *china = [[NSDatealloc]initWithTimeIntervalSinceNow:8*60*60];
NSLog(@"china = %@",china);
//用负数日期会自动倒退,
NSDate *USA = [[NSDatealloc]initWithTimeIntervalSinceNow:-8 * 60 * 60];
NSLog(@"USA = %@",USA);
//输出时间比当前北京时间少16小时(-8和8之间差16小时)NSDate *mt = [[NSDatealloc]initWithTimeIntervalSinceNow:24*60*60];
NSLog(@"mt = %@",mt);
//昨天
NSDate *zt = [[NSDatealloc]initWithTimeIntervalSinceNow:-24*60*60];
NSLog(@"zt = %@",zt);
//求差值
NSTimeInterval time = [mttimeIntervalSinceDate:zt];
//输出秒的差值
NSLog(@"%f",time);
//把差值由秒转化为小时输出 //输出的差值是47小时
NSInteger xiaoshicha = time/(60*60);
NSLog(@"xiaoshicha = %lu",xiaoshicha);
//随机创建一个时间
NSDate * suiji = [NSDatedateWithTimeIntervalSinceNow:arc4random()%(3600*24)];
NSLog(@"suiji = %@",suiji);
//距离1970-01-01 00:00:00 +0000(这里加多少,输出的便是距1970-01-01 00:00:00多少秒之后的时间)
NSDate *date1 = [[NSDatealloc]initWithTimeIntervalSince1970:0];
NSLog(@"date1 = %@",date1);
//计算指定日期多少秒之后的日期
NSDate *date2 = [NSDatedateWithTimeInterval:61*24*60*60
sinceDate:zt];//此处zt为上面昨天的意思
NSLog(@"date2 = %@",date2);
/************ NSDateFormatter ************
/*
NSDateFormatter是iOS中的日期格式类,功能是实现NSDate和NSString的互转
常见的格式化字符串有以下一些:y(年),M(年份中的月),d(月份中天数),H(一天中的小时数0~23),h am/pm(1~12),m(小时中的分钟数),s(分钟的秒)
*/
//字符串NSString转化为NSDate
//将字符串@“2014年05月01日 10点23分18秒”转换为NSDate对象。
NSDateFormatter *a = [[NSDateFormatteralloc]init];
[a setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *b =@"2014-05-01 10:23:18";
NSDate *c = [adateFromString:b];
NSLog(@"%@",c);//转出来是格林尼治时间
//转化的是当前北京时间
// NSDateFormatter *formatte=[[NSDateFormatter alloc]init];
//
// [formatte setDateFormat:@"dd-MM-yyyy hh:mm:ss"];
//
// NSTimeZone *timezone=[NSTimeZone timeZoneWithName:@"Asia/Shanghai"];
// [formatte setTimeZone:timezone];
// //将nsdate日期类型装换成一个nsstring类型的日期
// NSString *nowtimestr=[formatte stringFromDate:[NSDate date]];
// NSLog(@"nowtimestr = %@",nowtimestr);
//类的扩展:
/*
Category也叫分类或类目
作用是为看不到源代码 的类添加方法
通过Category添加的方法会成为原类的一部分,从而达到扩展一个类的功能
//通过类目给数组添加打印方法,直接输出中文汉字
NSArray *lovepeople = [NSArrayarrayWithObjects:@"那个谁",@"那个那个",@"那个是哪个",@"就是那个啊",@"柯南",@"小兰",nil];
NSLog(@"lovepeople = %@",lovepeople);
开始定义类目
类目的.m文件里:
(.h里不需要写就可以)
这样就可以把字符串里的汉字输出(之前输出的是 OC的码)
延展和协议:
/************** 定义Extension(延展) ***************/
/* Extension 的主要作用是 管理类的私有方法
面向对象编程也叫面向接口编程
在设计一个类的时候,有些方法需要对外公开(我们称为接口),有些方法仅仅内部使用(比如,是某个方法的一个小步骤)
Extension的功能是 帮我们去管理 这些内部使用的方法(“私有”方法)
*/
people *my = [[peoplealloc]init];
[my hello];
/* Extension和Category的区别:
1,作用:
类目是为没有源代码的类扩展方法
延展的作用是管理类的私有方法
2,格式上
类目需要定义一个新的.h .m
延展可以直接写到现有类的.m文件中
*/
/***************** protocol(协议) *********************/
LittleFang *litlefa = [[LittleFangalloc]init];
Me *qiao = [[Mealloc]init];
//设置代理 girlfriend是遵循mackGirlFriend协议的一个对象,把litlefa赋值给等号左边的girlFriend对象,表明litlefa成了makeGirlFriend代理,也就是说litlefa遵循了mackGirlFriend协议。
qiao.girlFriend = litlefa;
[qiao hungry];
[qiao washcloth];
[qiao facebeautiful];
[qiao sometimeangry];