zoukankan      html  css  js  c++  java
  • OC中的NSDate日期类和Foundation框架中的结构体相关操作

    一:NSDate

    NSDate可以⽤用来表⽰示时间,可以进⾏行⼀一些常见的⽇日期时间处理 • ⼀一个NSDate对象就代表⼀一个时间
    • [NSDate date]返回的就是当前时间

    1)日期对象的格式化操作

            // 1,获取当前时间
    //        NSDate *date = [NSDate date];
    //        NSLog(@"date = %@", date);
    //        
    //        // 格式化输出时间
    ////           y : 年
    ////        // M : 月
    ////        // d : 日
    ////        // h : 小时(12小时计时法)
    ////        // H : 小时 (24时计时法)
    ////        // m : 分钟
    ////        // s : 秒
    //
    //        // 2,创建一个格式化器
    //        NSDateFormatter *format = [[NSDateFormatter alloc] init];
    //        format.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    //        
    //        // 3,进行格式化
    //        NSString *str = [format stringFromDate:date];
    //        NSLog(@"%@", str);
            

    2)字符串转换成日期对象

    // 1,创建日期字符串
    //        NSString *strDate = @"2011-11-11 11:11:11";
    //        
    //        // 2,创建格式化器
    //        NSDateFormatter *format = [[NSDateFormatter alloc] init];
    //        // 2.1,设置格式,这里一定要跟上面格式保持一致.否则容易出错
    //        format.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    //        
    //        // 3,将字符串转换成日期格式
    //        NSDate *date = [format dateFromString:strDate];
    //        NSLog(@"%@", date);
            
            //---------借助NSCalendar对象来获取日期的每一部分------------------
            
            // 创建一个NSCalendar对象
    //        NSCalendar *calendar = [NSCalendar currentCalendar];
    //        // 创建一个当前日期对象
    //        NSDate *date = [NSDate date];
    //        
    //        // 获取当前日期的年份
    //        NSCalendarUnit unit = NSCalendarUnitYear;
    //       NSDateComponents *year = [calendar  components:unit fromDate:date];
    //        NSLog(@"年:%ld", year.year);
            

    3)两个字符串日期的比较操作

            NSString *strDate1 = @"2008-05-20 10:15:30";
    //        NSString *strDate2 = @"2008-05-12 14:20:38";
    //        
    //        // 把字符串格式的日期转换成日期对象
    //        NSDateFormatter *format = [[NSDateFormatter alloc] init];
    //        format.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    //        
    //        NSDate *date1 = [format dateFromString:strDate1];
    //        NSDate *date2 = [format dateFromString:strDate2];
    //        
    //        // 创建NSCalendar对象
    //        NSCalendar *calendar = [NSCalendar currentCalendar];
    //        NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay;
    //        NSDateComponents *comp = [calendar components:unit fromDate:date2 toDate:date1 options:0];
    //        
    //        NSLog(@"%ld, %ld, %ld", comp.year, comp.month, comp.day);

    注意:日期操作涉及到的类有:NSDate、NSDateFormatter和NSCalendar

    二:Foundation框架下得结构体操作

            // ========Foundation框架中常用的四种结构体
            // NSRange 表示字符串中含有某个字符串的范围  属性值location, length
            // NSPoint == CGPoint 表示二维空间中一个坐标点 属性值:x,y
            // NSSize == CGSize 表示一个UI控件的尺寸 属性值:width,height
            // NSRect == CGRect 表示UI控件坐标点和尺寸大小 属性值:CGPoint、CGSize
            
            // 四种结构体用法
    //        CGPoint point = CGPointMake(0, 0);
    //        CGSize size = CGSizeMake(10, 10);
    //        CGRect rect = CGRectMake(0, 0, 10, 10);
    //        NSRange range = NSMakeRange(3, 3);
            
            // Foundation框架中利用函数把结构体转成字符串
            // 把坐标原点转换成字符串
    //        NSString *strP = NSStringFromPoint(CGPointMake(0, 0));
            
            // 把尺寸转成字符串
    //        NSString *strS = NSStringFromSize(CGSizeMake(10, 10));
            
            // 把位置和尺寸转换成字符串
    //        NSString *strR = NSStringFromRect(CGRectMake(0, 0, 10, 10));
    //        NSLog(@"%@", strR);
            
            // 比较两个点位置是否相同
    //        BOOL b = CGPointEqualToPoint(CGPointMake(0, 0), CGPointMake(0, 0));
            
            // 比较两块区域是否相同
    //        BOOL b = CGRectEqualToRect(<#CGRect rect1#>, <#CGRect rect2#>)
            
            // 判断两个尺寸是否相同
    //        BOOL b = CGSizeEqualToSize(<#CGSize size1#>, <#CGSize size2#>)
            
            // 判断一个点是否在一个区域内
    //        BOOL b  = CGRectContainsPoint(<#CGRect rect#>, <#CGPoint point#>)
            
            

    三:OC中基本数据类型的包装操作

    1)int double char float数据类型的包装处理

            /**
             *  OC数组中只能存放OC对象,不能存放基本基本数据类型,所以为了将基本数据类型存放到OC数组中
             *  可以把基本数据类型包装成OC对象存放
             */
            // 1,基本数据int char double float数据的包装
            // NSNumber 的包装(int/double/float)
            // int包装
    //        NSNumber *num1 = [NSNumber numberWithInt:10];
            
            // double/float包装
    //        NSNumber *num2 = [NSNumber numberWithFloat:<#(float)#>]
    //        NSNumber numberWithDouble:<#(double)#>
            
            // 快速包装方式
    //        NSArray *arr = @[@100];
    //        NSLog(@"%@", arr);
            
            // 将NSNumber类型转换会基本数据类型
    //        NSNumber *num = [NSNumber numberWithInt:100];
    //        int num1 = num.intValue;
    //        NSLog(@"%d", num1);
            /**
             *  从NSNumber中取出之前包装的基本数据类型 - (char)charValue;
             - (int)intValue;
             - (long)longValue;
             - (double)doubleValue;
             - (BOOL)boolValue;
             - (NSString *)stringValue;
             */

    2)Foundation框架下得结构体的包装操作

            // 2,结构体数据类型的包装
            /**
             *  NSNumber是NSValue的⼦子类,但NSNumber只能包装数字类型
             • NSValue可以包装任意值
             • 因此, 可以⽤用NSValue将结构体包装后, 加⼊入NSArrayNSDictionary中
             */
    //        CGPoint point =  CGPointMake(0, 0);
    //        NSValue *value = [NSValue valueWithPoint:point];
    //        NSValue valueWithRange:<#(NSRange)#>
    //        NSValue valueWithRect:<#(NSRect)#>
    //        NSValue valueWithSize:<#(NSSize)#>
    //        NSLog(@"%@", value);

    3)自定义结构体的包装处理

            // 自定义结构体的包装
            
            typedef struct {
                
                int year;
                int month;
                int day;
            } Date;
            
            Date date = {2010,10,10};
            NSValue *value = [NSValue valueWithBytes:&date objCType:@encode(Date)];
            NSArray *arr = @[value];
            Date date1;
            
            NSValue *value1 = arr[0];
            [value1 getValue:&date1];
            NSLog(@"%d--%d---%d", date1.year, date1.month, date1.day);
            
  • 相关阅读:
    Jasmine入门(上)
    手把手教你如何安装和使用Karma-Jasmine
    AngularJS入门之动画
    AngularJS入门之Services
    AngularJS入门之数据验证
    AngularJS入门之数据绑定
    AngularJS的Filter用法详解
    WPF快速实现XML可视化编辑工具
    AngularJS自定义Directive
    低级错误总结
  • 原文地址:https://www.cnblogs.com/-boy/p/4096481.html
Copyright © 2011-2022 走看看