OC学习笔记18--Foundation之包装类与日期

#import 


void OCObjectConversion();
void NSDateTest();
int main(int argc, const char * argv[])
{
	NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
    //OC对象与非OC对象数据类型的转换  
    OCObjectConversion(); 
    NSLog(@"\n-------------------------\n\n");
    //日期类的使用 
    NSDateTest();
       
    [pool drain];
    return 0;
}

void NSDateTest()
{
	//将时间格式化成字符串的工具类
	NSDateFormatter *df=[[[NSDateFormatter alloc] init] autorelease];
	//设置日期格式
	[df setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
	//将符合设置日期格式的字符串转换成日期
	NSDate *date=[df dateFromString:@"2015-08-07 10:10:10"];
	NSLog(@"\nbeforeFormat=%@\nafterFormat=%@",date,[df stringFromDate:date]);
	
	
	//获取当前时间
	NSDate *now=[NSDate date];
	//120s后
	NSDate *later=[NSDate dateWithTimeIntervalSinceNow:120];
	//5分钟前
	NSDate *before=[NSDate dateWithTimeIntervalSinceNow:-300];
	//获取离当前时间的秒数
	NSTimeInterval secsGap=[later timeIntervalSinceNow];
	double secsGap2=[before timeIntervalSinceNow];
	
	//默认按照格林威治时间打印
	NSLog(@"\nnow=%@\nlater=%@,secsGap=%.2f\nbefore=%@,secsGap2=%.2f",
	now,later,secsGap,before,secsGap2);
	
	
	// 返回1970到当前日期对象时间经过的秒数,NSTimeInterval是double类型
	NSTimeInterval nowSecs=[now timeIntervalSince1970];
	// 用秒数来创建时间
	NSDate *now2=[NSDate dateWithTimeIntervalSince1970:nowSecs];
	NSLog(@"secs=%.2f,now2=%@",nowSecs,now2);
	
	
	
}

void OCObjectConversion()
{
	int a =10;
	//几种包装C中基本数据类型的方式
	NSLog(@"%@-%@-%@",[NSNumber numberWithInt:a],@'\n',@(a));
	//还原成基本数据类型
    NSLog(@"%d-%d-%d",[[NSNumber numberWithInt:'0'] intValue],
    [@10 intValue],[@(a) intValue]);
    
    
    //OC字符串与数字的转换
    NSString *numStr=[NSString stringWithFormat:@"%d",100];
    int num=[numStr intValue];
    NSLog(@"numStr=%@,num=%d",numStr,num);
    
    
    //利用NSValue包装结构体
    NSValue *range=[NSValue valueWithRange:NSMakeRange(0,0)];
	
	NSValue *point=[NSValue valueWithPoint:NSMakePoint(1,1)];
	
	NSSize *size=[NSValue valueWithSize:NSMakeSize(2,2)];
	
	NSRect *rect=[NSValue valueWithRect:NSMakeRect(0,0,3,3)];
	
	// 非OC对象包装成OC对象后才可保存在OC集合中
	NSMutableDictionary *mdict=[NSMutableDictionary dictionary];
	[mdict setObject:range forKey:@"range"];
	[mdict setObject:point forKey:@"point"];
	[mdict setObject:size forKey:@"size"];
	[mdict setObject:rect forKey:@"rect"];
	
	NSString *(*rangeToStr)(NSRange)=NSStringFromRange;
	NSString *(*sizeToStr)(NSSize)=NSStringFromSize;
	NSString *(*pointToStr)(NSPoint)=NSStringFromPoint;
	NSString *(*rectToStr)(NSRect)=NSStringFromRect;
	
	
	NSLog(@"%@",mdict);
	
	NSArray *keys=[mdict allKeys];
	int i;
	id key,obj;
	for(i=0;i<[keys count];i++)
	{
		key=[keys objectAtIndex:i];
		obj=[mdict objectForKey:key];
		
		//打印NSValue对象的值
		NSLog(@"%@=%@",key,obj);
		
		// 还原成struct类型后打印
		if([@"range" isEqualToString:key])
		{
			NSLog(@"%@=%@",key,rangeToStr([obj rangeValue]));
		}else if([@"size" isEqualToString:key])
		{
			NSLog(@"%@=%@",key,sizeToStr([obj sizeValue]));
		}else if([@"rect" isEqualToString:key])
		{
			NSLog(@"%@=%@",key,rectToStr([obj rectValue]));
		}else if([@"point" isEqualToString:key])
		{
			NSLog(@"%@=%@",key,pointToStr([obj pointValue]));
		}
	}
	
}



包装类:
负责将非OC对象包装成OC对象

NSNumber:
继承自NSValue,专门负责包装C中的基本数据类型;
//包装基本数据类型,便捷形式为 @10,如果是变量则@(i)
+(id)numberWithInt:(int)i;
//还原成基本数据类型
-(int)intValue;



NSValue:
用来将非OC对象类型数据包装成OC对象;
//包装NSRange,CGPoint,CGSize,CGRect这些常用struct成NSValue对象
+(id)valueWithPoint:(CGPoint)point;
//还原
-(CGRange)rangeValue;

NSString与基本数据类型互相准换:
 //基本数据类型转字符串
NSString *numStr=[NSString stringWithFormat:@"%d",10];
int i=[numStr intValue];




日期类 NSDate:
//获取当前时间
+(id)date;
//创建与指定时间间隔N秒的时间
+(id)dateWithTimeInterval:(NSTimeInterval)secs sinceDate:(NSDate*)since;
//创建当前时间secs秒后的时间
+(id)dateWithTimeIntervalSinceNow:(NSTimeInterval)secs;
//创建从1970后secs秒的时间
+(id)dateWithTimeIntervalSince1970:(NSTimeInterval)secs;
//返回当前到该时间的秒数
-(NSTimeInterval)timeIntervalSinceNow;
 //返回1970到该时间的秒数
-(NSTimeInterval)timeIntervalSine1970;

格式化日期的工具类:NSDateFormatter
// 设置使用的日期格式
-(void)setDateFormat:(NSString *)format;
//日期转字符串
-(NSString *)stringFromDate:(NSDate *)date;
//字符串转日期
-(NSDate *)dateFromString:(NSString *)dateStr;

你可能感兴趣的:(note)