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];


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值