189 8069 5689

OCcategory(分类,类目),日期类常用用法-创新互联

学了这么久OC我们都知道OC中的类分为系统类和自定义的类,当我们在使用系统为我们提供的类时有时往往不能满足我们的需要,例如,字符串NSString类提供了比较字符串的方法compare,为数组排序时系统默认的是升序,当需要为数组按降序排序时,一种途径是需要新建一个类写一个降序的方法,而另一个途径就是系统提供的category(分类,类目),分类(类目,category)的目的为了给没有源代码的类添加方法(只能添加方法,不能添加实例变量),是扩充一个类功能的方式之一,为原有类扩充的方法会成为原类的一部分,直接用系统类对象或者系统类调用该方法, 使用即可.

成都创新互联企业建站,10余年网站建设经验,专注于网站建设技术,精于网页设计,有多年建站和网站代运营经验,设计师为客户打造网络企业风格,提供周到的建站售前咨询和贴心的售后服务。对于成都网站设计、网站制作中不同领域进行深入了解和探索,创新互联在网站建设中充分了解客户行业的需求,以灵动的思维在网页中充分展现,通过对客户行业精准市场调研,为客户提供的解决方案。

 分类也分为,h(接口部分)和.m(实现部分),.h文件中写方法的声明,.m文件中写方法的实现,

 (1),新建一个类,在新建类时选择Objective-C category,

建立之后,在.h文件里@interface + 要扩展的类的类名 +(分类名)@end结束,

先声明分类方法

/两个字符串比较对象;

-  (NSComparisonResult)sortDescending:(NSString *)descending;

在.m文件里实现

//两个字符串比较对象;

- (NSComparisonResult)sortDescending:(NSString *)descending

{

   return -[selfcompare:descending];

}

在main函数里可以直接使用,如:

对数组array按照降序排序

NSArray *array = @[@"dd",@"bb",@"aa",@"ee",@"mm"];

NSArray *arrDescending = [array sortedArrayUsingSelector:@selector(sortDescending:)];

 NSLog(@"%@",arrDescending);

输出结果为

(

   mm,

   ee,

   dd,

   bb,

   aa

)

二, 日期类常用方法用法 NSDate

1,基本用法:

1),创建一个对象,赋值为当前日期date 创建的NSDate对象,获得的永远是0时区的时间,我们是东八区,需要加上8个小时

NSDate *date = [NSDatedate];

2),创建一个明天此时的日期(时间间隔是以秒为单位的)dateWithTimeIntervalSinceNow:

       NSDate *tomorrow = [NSDatedateWithTimeIntervalSinceNow:24 * 60 * 60];

       NSLog(@"%@",tomorrow);

       创建一个昨天此时的日期

       NSDate *yesterday = [NSDatedateWithTimeIntervalSinceNow:-24 * 60 * 60];

       NSLog(@"%@",yesterday);

       3).获取两个日期的时间间隔  timeIntervalSinceDate: 实现过程是前者减去后者

       NSTimeInterval intervil = [tomorrow timeIntervalSinceDate:yesterday];

       NSLog(@"%.1f",intervil/60/60/24);

       4),比较日期的早晚

       (1),获得两个日期中较早的日期 earlierDate:

       NSDate *earlier = [tomorrow earlierDate:yesterday ];

       NSLog(@"%@",earlier);

       (2),获得两个日期中较晚的日期  laterDate:

       NSDate *later = [tomorrow laterDate:yesterday ];

       NSLog(@"%@",later);

       (3),两个日期比较  compare:

NSComparisonResult类型是基本数据类型duoble的重定义

       NSComparisonResultcomparDate = [tomorrow compare:yesterday ];

       NSLog(@"%ld",comparDate);

2,日期类与字符串的相互转换

 (1), NSDateFormatter是一个日期格式类,将日期以一定的格式进行转换,(原理,转换成字符串),分为三步

 NSDate *dateNow = [NSDatedate];

 第一步: 创建日期格式类对象

       NSDateFormatter *formatter = [[NSDateFormatteralloc] init];

 第二步: 指定日期格式  formatter

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

HH表示24小时制,hh表示12小时制,MM表示月份,mm表示分钟,DD表示当前是该年的第几天,dd表示当月天数,ss表示秒数,如果年份为yy,则输出时只显示年份的后两位,如果为其他的则显示完整年份

第三步: 转换  stringFromDate:

      NSString *dateStr = [[NSStringalloc] init];

       dateStr = [formatter stringFromDate:dateNow];

 (2),将日期格式转换为NSDate对象,即将日期按照指定的格式转换为日期格式串,

例子:

将日期格式串转换为日期对象@"2008年05月01日10时23分1秒"       NSString *datestr = @"2008年05月01日10时23分18秒";

第一步: 创建日期格式类对象

       NSDateFormatter *formatter = [[NSDateFormatteralloc] init];

第二步:

       (1),设置日期的格式 (有四种)

       [formatter setDateStyle:NSDateFormatterFullStyle];

       (2),设置时间的格式 (有四种)

       [formatter setTimeStyle:NSDateFormatterFullStyle];

       (3)设置日期格式(一定要和日期格式串中的日期格式保持一致)

   [formatter setDateFormat:@"yyyy年MM月dd日HH时mm分ss秒"];

第三步: 转换 dateFromString:  将格式串转换为日期对象

      NSDate *date2 = [formatter dateFromString:datestr];

       NSLog(@"%@",date2);

要注意的是:日期类对象输出默认的是0时区的时间,如: 2014-08-12 02:38:30 +0000,其实是中国标准时间上午2014-08-12 10:38:30

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享文章:OCcategory(分类,类目),日期类常用用法-创新互联
网页网址:http://cdxtjz.com/article/igpdp.html

其他资讯