OC category (分類,類目),日期類常用用法

學了麼久OC都知道OC中的統類和自定,當我在使用系統爲提供的類時往往不能滿足我的需要,例如,字符串NSString提供了比較字符串的方法compare,排序的是升序,當需要按降序排序時,一種途徑是需要新建一個寫一個降序的方法,而另一個途徑就是系提供的category(,),分類(類目,category)的目的爲了給沒有源代碼的類添加方法(只能添加方法,不能添加實例變量),是擴充一個類功能的方式之一,爲原有類擴充的方法會成爲原類的一部分,直接用系統類對象或者系統類調方法, 使用即可.

 分類也分爲,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對象,將日期按照指定的格式轉換爲日期格式串,

例子:

將日期格式串轉換爲日期對象@"2008050110231"        NSString *datestr = @"20080501102318";

 

第一步: 創建日期格式類對象

        NSDateFormatter *formatter = [[NSDateFormatteralloc] init];

 

第二步:

        (1),設置日期的格式 (有四種)

        [formatter setDateStyle:NSDateFormatterFullStyle];

 

        (2),設置時間的格式 (有四種)

        [formatter setTimeStyle:NSDateFormatterFullStyle];

 

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

    [formatter setDateFormat:@"yyyyMMddHHmmss"];

 

第三步: 轉換  dateFromString:  將格式串轉換爲日期對象

       NSDate *date2 = [formatter dateFromString:datestr];

        NSLog(@"%@",date2);

 

 

要注意的是:日期類對象輸出默認的是0時區的時間,如: 2014-08-12 02:38:30 +0000,是中國時間上午2014-08-12 10:38:30


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章