Foundation框架--- NSDate、NSNumber

NSDate

创建一个时间对象

    NSDate *date =[NSDate date];

    //TimeInterval:时间间隔
    //创建一个时间对象,比date这个时间对象万5秒
    NSDate *date2 = [NSDate dateWithTimeInterval:5 sinceDate:date];

    //创建一个时间对象,比当前时间晚5秒
    NSDate *date3 = [NSDate dateWithTimeIntervalSinceNow:5];

从1970开始走过的秒数

    NSDate *date = [NSDate date];
    NSTimeInterval seconds = [date timeIntervalSince1970];
    NSLog(@"%f",seconds);

输出结果:
2015-03-15 11:45:27.893 nsdate[1841:17962] 1426391127.893070

时间距离代码运行的时间间隔有多少秒

    NSDate *date = [NSDate date];
    NSTimeInterval seconds = [date timeIntervalSinceNow];
    NSLog(@"%f",seconds);

时间的格式化

时间若要显示到手机屏幕上,则需要将时间先转化为字符串
    NSDate *date = [NSDate date];

    //日期格式化类:NSDateFormatter
    NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
    //设置日期格式
    formatter.dateFormat = @"yyyy-MM-dd hh:mm:ss";
    //将时间转化为字符串
    NSString *str = [formatter stringFromDate:date];
    //输出时间
    NSLog(@"%@",str);

输出结果:
2015-03-15 12:05:56.843 nsdate[2572:25542] 2015-03-15 12:05:56

转换日期的格式

转换须知:y年 M月 d日 m分 s秒 H时(24小时制) h时(12小时制)
    NSDate *date = [NSDate date];
    NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
    //格式1:
    formatter.dateFormat = @"yyyy-MM-dd hh:mm:ss";
    NSString *str1 = [formatter stringFromDate:date];
    NSLog(@"str1:%@",str1);
    //格式2:
    formatter.dateFormat = @"yyyy年M月d日 h时m分s秒";
    NSString *str2 = [formatter stringFromDate:date];
    NSLog(@"str2:%@",str2);

输出结果:
2015-03-15 12:17:19.105 nsdate[2936:29501] str1:2015-03-15 12:17:19
2015-03-15 12:17:19.105 nsdate[2936:29501] str2:2015年3月15日 12时17分19秒

NSString转换为时间

    NSString *time = @"2015-3-15 12:10";
    NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
    formatter.dateFormat = @"yyyy-MM-dd HH:mm";

    //字符串转换为时间
    NSDate *date = [formatter dateFromString:time];

NSNumber

NSNumber的作用:

将非oc对象的基本类型包装成NSNumber对象。你可能会问,为什么要包装成NSNumber对象呢?在oc中,很多情况下不能用基本数据类型,必须用oc对象。比如:NSArray、NSMutableArray、NSDictionary、NSMutableDictionary、NSSet、NSMutableSet……中添加的元素必须是oc对象,而不能是基本数据类型。

基本数据类型:

  • int
  • float
  • double
  • char

NSNumber的创建

    NSNumber *n1 = [NSNumber numberWithInt:10];
    NSNumber *n2 = [NSNumber numberWithDouble:10.1];
    NSNumber *n3 = [NSNumber numberWithFloat:10.1];
    NSNumber *n4 = [NSNumber numberWithChar:'A'];

    //将NSNumber对象转换成基本数据类型
    int data1 = [n1 intValue];
    double data2 = [n2 doubleValue];
    float data3 = [n3 floatValue];
    char data4 = [n4 charValue];

根据编译器的特性,NSNumber的创建可以简写成

    NSNumber *n5 = @20;
    //上面的一行代码和下面的代码等效
    NSNumber *n6 = [NSNumber numberWithInt:20];

根据@20是NSNumber对象,则可以添加到数组中

    //23是年龄,chenfanfang是姓名
    NSArray *array = @[
                     @23,
                     @"chenfanfang"
                     ];
    //取出元素并且输出
    int age = [array[0] intValue];
    NSString *name = array[1];
    NSLog(@"age:%d",age);
    NSLog(@"name:%@",name);

输出结果:
2015-03-14 22:16:40.616 Nsnumber[1674:17330] age:23
2015-03-14 22:16:40.617 Nsnumber[1674:17330] name:chenfanfang

字符的注意事项

  • @’A’ 是NSNumber对象
  • @”A” 是NSString对象

NSString部分功能也类似于NSNumber

    NSString *str1 = @"20";
    NSString *str2 = @"20.1";
    NSString *str3 = @"23.1";
    int data1 = [str1 intValue];
    float data2 = [str2 floatValue];
    double data3 = [str3 doubleValue];

NSNumber继承了NSValue

NSNumber之所以能包装基本数据类型为对象,是因为继承了NSValue

NSValue能包装任何基本数据,包括结构体

NSValue包装结构体事例:
    CGPoint p = CGPointMake(10, 10);
    NSValue *value = [NSValue valueWithPoint:p];
    NSArray *array = @[value];

    //取出结构体
    CGPoint p2 = [array[0] pointValue];
    NSLog(@"x = :%f  y = :%f",p2.x,p2.y);

输出结果:
2015-03-14 23:02:13.725 Nsnumber[3093:31466] x = :10.000000 y = :10.000000

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值