首页 > 代码库 > OC中的NSDate日期类和Foundation框架中的结构体相关操作
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 = http://www.mamicode.com/[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 = http://www.mamicode.com/[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);
OC中的NSDate日期类和Foundation框架中的结构体相关操作
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。