OC_NSDate,NSSet,對象和數據類型的轉換

NSDate 日期的類

1.+date獲取的時間無論在哪個區,都是打印相對應的零時區的時間

NSDate *date = [NSDate date];

NSLog(@"%@", date);


2.獲取一下當前所在的時區

     NSTimeZone *zone = [NSTimeZone systemTimeZone];

     NSLog(@"%@", zone);


3.獲取一下和0時區相差的秒數

NSInteger seconds = [zone secondsFromGMTForDate:date];

     NSLog(@"%ld", seconds);


4.通過相差的秒數,能獲取到現在的時間

  NSDate *localDate = [NSDate dateWithTimeIntervalSinceNow:seconds];


5.

NSDate *times = [NSDate dateWithTimeIntervalSince1970:0];

     NSLog(@"%@", times);


計算:

//一個明天這個時候的時間

     NSDate *tomorrowDate = [NSDate dateWithTimeIntervalSinceNow:seconds + 3600*24];

     NSLog(@"%@", tomorrowDate);


//一個昨天這個時候的時間

      NSDate *yesterdayDate = [NSDate dateWithTimeIntervalSinceNow:seconds - 3600*24];

      NSLog(@"%@", yesterdayDate);


6.求兩個對象的時間間隔

  NSTimeInterval interval = [tomorrowDate timeIntervalSinceDate:date];

     NSLog(@"%g", interval);



練習:
    計算當前時間和一個固定時間的差值,如果差值在60秒內,輸出"剛剛",如果在60秒外3600秒內,輸出"**分鐘前", 如果3600秒外,輸出"**小時前"
NSDate *date1 = [NSDate date];

NSDate *date2 = [NSDate dateWithTimeIntervalSinceNow:1000];

NSTimeInterval times = [date1 timeIntervalSinceDate:date2];

        if (times < 60) {

         NSLog(@"剛剛");

     }else if (times >= 60 && times <=3600){

         NSLog(@"%ld分鐘前", (NSInteger)times / 60);

     }else if (times > 3600 && times < 3600*24){

         NSLog(@"%ld小時前", (NSInteger)times / 3600);

     }



7.日期和字符串的一個互相的轉換
(1)NSDate -> NSString
   //方法一:轉化成當前日期模式的字符串

  NSDate *date = [NSDate date];   

     NSString *dateStr = [NSString stringWithFormat:@"%@", date];

     NSLog(@"%@", dateStr);


  //方法二:轉化成自定義字符串格式  yyyy-MM-dd HH-mm-ss
//先設置一下時間的格式,要轉換的時間要和格式相吻合

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

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

   NSDate *date = [NSDate date];

//通過格式,把制定的時間直接轉換成NSString,通過這種方式,系統還會把時間切換成當前的時間

   NSString *strDate = [formatter stringFromDate:date];

    NSLog(@"%@", strDate);


(2)字符串 ->NSDate

時間又被減回去8小時

NSString *timeStr = @"2015-7-23 17-18-10";

NSDate *date = [formatter dateFromString:timeStr];

   NSLog(@"%@", date);


************************************************************************************************************************************************

 NSSet 集合

   NSSet 是無序的

   NSSet不能有重複的元素

   集合裏的元素必須是對象類型

// NSSet *set = [[NSSet alloc]initWithObjects:@"1", @"2", @"3", @"4", @"5", nil];   //定義不可變集合


  NSSet *set = [NSSet setWithObjects:@"1"@"2"@"6"@"3"@"5",@"2" ,nil];//定義不可變集合

     NSLog(@"%@", set);  //隨機輸出不重複的對象

     NSLog(@"%ld", set.count);  //輸出不重複的個數

     NSLog(@"%@", [set anyObject]);//返回其中的某一個元素

     NSLog(@"%d", [set containsObject:@"3"]);  //判斷對象裏有沒有3    

        

  

  NSMutableSet *set = [NSMutableSet setWithObjects:@"1"@"2"@"3",@"4"nil];  //定義可變集合

      NSLog(@"%@", set);

    

     [set addObject:@"5]; //添加元素

     NSLog(@"%@", set);

   

     [set removeObject:@"3];  //刪除元素

      NSLog(@"%@", set);

    

     for (NSString *temp in set) { //快速枚舉

         NSLog(@"%@", temp);

     }


************************************************************************************************************************************

值對象:NSNumber

1.字面量方式創建值對象

NSNumber *num = @10;

2.把基本數據類型轉換成對象類型

NSInteger a = 10;

     NSNumber *number = [[NSNumber alloc]initWithInteger:a];

     NSLog(@"%@", number);

3.NSNumber 轉換成 Integer

     NSInteger b = [number integerValue];

  

  

   

結構體和指針轉與對象類型的轉換   

NSRange range = {25};  //定義OC裏的結構體 兩個變量 (location ,length)

NSLog(@"%ld", range.length);  //結果:5

NSLog(@"%ld", range.location); //結果:1

注意:結構體的.是訪問成員變量,對象調用屬性是點語法



1. NSRange —>NSValue

NSValue *value = [NSValue valueWithRange:range];

     NSLog(@"%@", value);

        

    NSvalue -->NSRange

    NSRange rangeV =[value rangeValue];


2.指針轉換爲對象

int a = 10;

     int *p = &a;

    NSValue *pointer = [NSValue valueWithPointer:p];


  對象轉換成指針

        int *p1 = [pointer pointerValue];


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