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将结构体包装后, 加?入NSArray\NSDictionary中
         */
//        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);
        
时间: 2024-11-03 21:28:23

OC中的NSDate日期类和Foundation框架中的结构体相关操作的相关文章

OC学习篇之---Foundation框架中的其他类(NSNumber,NSDate,NSExcetion)

1.NSNumber 这个类主要是用来封装基本类型的,说到这里,就不得不说一下了: OC中的集合是不允许存入基本类型的,所以NSNumber类就诞生了,需要将基本类型封装一下,然后存进去,这个类似于Java中的自动装箱和拆箱,Java中的集合其实也是不允许存入基本类型的,但是我们任然看可以那么操作,就是因为有自动装箱功能,如果你将Eclipse的JDK改成5.0之前的,你看看还能操作吗.. 注:那为什么基本类型不能存入到集合中呢? 原因是在操作集合的时候会操作集合元素中的方法,但是基本类型是没有

(转载)OC学习篇之---Foundation框架中的其他类(NSNumber,NSDate,NSExcetion)

前一篇说到了Foundation框架中的NSDirctionary类,这一一篇来看一下Foundation的其他常用的类:NSNumber,NSDate,NSException. 注:其实按照Java中集合的思想,应该还有一个Set,是的,OC中有NSSet和NSMutableSet这两个类的,但是,这里我为什么不单独介绍了呢?因为他的操作和NSArray是非常相似的,只是他和NSArray有一个区别就是他不能放重复数据,而且他也是无序的.其他没什么了,所以就不单独介绍了,而且NSSet在后面的

OC学习篇之---Foundation框架中的NSDictionary类以及NSMutableDictionary类

今天来看一下Foundation框架中的NSDictionary类,NSMutableDictionary类,这个和Java中的Map类很想,OC中叫字典,Java中叫Map,还有字典是无序的,这个和NSArray不一样,Java中的Map也是无序的,通过hash值去检索元素的. 一.NSDictionary类 [objc] view plain copy // //  main.m //  19_NSDictionary // //  Created by jiangwei on 14-10-

OC学习篇之---Foundation框架中的NSDirctionary类以及NSMutableDirctionary类

昨天学习了Foundation框架中NSArray类和NSMutableArray类:http://blog.csdn.net/jiangwei0910410003/article/details/41809719,今天来看一下Foundation框架中的NSDirctionary类,NSMutableDirctionary类,这个和Java中的Map类很想,OC中叫字典,Java中叫Map,还有字典是无序的,这个和NSArray不一样,Java中的Map也是无序的,通过hash值去检索元素的.

OC学习篇之---Foundation框架中的NSArray类和NSMutableArray类

在之前的一篇文章中介绍了Foundation框架中的NSString类和NSMutableString类: http://blog.csdn.net/jiangwei0910410003/article/details/41788223 今天我们继续来看一下Foundation框架中的NSArray类和NSMutableArray类,其实NSArray类和Java中的List差不多,算是一种数据结构,当然我们从这两个类可以看到,NSArray类是不可变的,NSMutableArray类是可变的.

(转载)OC学习篇之---Foundation框架中的NSDirctionary类以及NSMutableDirctionary类

昨天学习了Foundation框架中NSArray类和NSMutableArray类,今天来看一下Foundation框架中的NSDirctionary类,NSMutableDirctionary类,这个和Java中的Map类很想,OC中叫字典,Java中叫Map,还有字典是无序的,这个和NSArray不一样,Java中的Map也是无序的,通过hash值去检索元素的. 一.NSDirctionary类 1 // 2 // main.m 3 // 19_NSDictionary 4 // 5 //

(转载)OC学习篇之---Foundation框架中的NSArray类和NSMutableArray类

在之前的一篇文章中介绍了Foundation框架中的NSString类和NSMutableString类,今天我们继续来看一下Foundation框架中的NSArray类和NSMutableArray类,其实NSArray类和Java中的List差不多,算是一种数据结构,当然我们从这两个类可以看到,NSArray类是不可变的,NSMutableArray类是可变的. 下面就先来看一下NSArray类: 一.NSArray类 1 // 2 // main.m 3 // 16_NSArray 4 /

Foundation框架中一些类的使用

提示:  这篇博文主要介绍了Foundation框架中一些类的使用方法,都是以代码方式展示的,可能会比较乱,但都是些常用的方法,这些方法常用自然就会记住所以不用纠结,注意主要记方法的第一个单词,单词不认识的话可以记前三个字母,再配合提示查找 ------------------------------------------------------------------------------------------------------------------ NSURL简介 什么是URL

黑马程序员-OC加强学习日记-Foundation框架中的字符串和数组

------- ios培训. android培训.java培训.期待与您交流! ---------- 一.Foundation框架 1.概念:框架是由许多类.方法.函数.文档按照一定的逻辑组织起来的集合,以便使研发程序变得更容易. 为所有程序开发奠定基础的框架称为Foundation框架 2.使用:要想使用Foundation框架中的功能,包含它的主文件即可 #import <Foundation/Foundation.h> 二.NSString: 不可变字符串类   一个NSString对象