Objective-C学习笔记之NSData、NSDate
NSData和NSMutableData存储的是二进制数据,在文件操作,网络,以及核心图形图像中使用较广泛。NSData创建后不可以再修改,NSMutableData可以再次修
1 NSString *str = @"1234thhijioiooij"; 2 NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];//将字符串转换成data,NSUTF8StringEncoding代表编码格式 3 4 NSString *str1 = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];//data转换成字符串 5 NSLog(@"%@",str1); 6 7 NSLog(@"%@",data);//输出data 8 9 NSLog(@"%zi",data.length);//data的长度 10 11 NSData *data1 = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.iconpng.com/png/ios7-premium/tree11.png"]];//获取网络数据 12 13 NSLog(@"%@",data1); 14 15 NSMutableData *data2 = [NSMutableData data];//创建一个空的数据 16 [data2 appendData:data];//拼接data
NSDate
1 NSDate *nsdate = [NSDate dateWithTimeIntervalSinceNow:20*60*60];// 返回以当前时间为基准,然后过了20*60*60秒的时间 2 NSLog(@"%@",nsdate); 3 NSDate *nsdate2 = [NSDate date];//获取当前时间 4 NSLog(@"%@",nsdate2); 5 NSTimeInterval time = [[NSDate date]/*当前时间*/ timeIntervalSinceDate:nsdate/*填写日期*/]; //获取两个日期的间隔时间差(单位s) 6 NSTimeInterval time1 = [[NSDate date]/*当前时间*/ timeIntervalSinceNow];//返回与当前时间的时间差(单位s) 7 NSLog(@"%f,%f",time,time1); 8 NSDate *laterOne = [nsdate laterDate:nsdate2];//获取两个日期时间对象中较晚的一个 9 NSDate *laterOne1 = [nsdate earlierDate:nsdate2]; //获取两个日期时间对象中较早的一个 10 NSDate *anHourAfter = [laterOne dateByAddingTimeInterval:60 * 60];//获取给定时间 过了多少秒后的时间,秒数可以为负值 11 12 //日期时间格式化对象(日期时间按自定义格式输出) 13 NSDateFormatter *dateFormatter = [NSDateFormatter new]; 14 //设置日期显示格式 15 // [dateFormatter setDateFormat:@"yyyy年MM月dd日 HH时mm分ss秒 a"]; 16 [dateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss a"];//格式化之后不存在时差了,字符小写12小时制,大写24小时制 17 //格式化日期时间对象(把日期对象转换成字符串) 18 NSString *localDateTime = [dateFormatter/*格式*/ stringFromDate:[NSDate date]/*对象*/]; 19 NSLog(@"%@",localDateTime); 20 //把日期格式的字符串转换成日期对象(将字符串转化为日期,需要把字符串格式跟自定义时间日期格式一致,才能抓取) 21 NSString *myDateTimeStr = @"2013-04-25 11:35:20"; 22 NSDateFormatter *formatter = [NSDateFormatter new]; 23 [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 24 NSDate *newDate = [formatter/*格式*/ dateFromString:myDateTimeStr/*对象*/];
解决时差
1 // //系统时区 2 NSTimeZone *zone = [NSTimeZone systemTimeZone]; 3 NSString *abbStr = [zone abbreviation];//系统时区缩写 4 NSLog(@"系统时区缩写:%@",abbStr); 5 NSTimeZone *localTimeZone = [NSTimeZone localTimeZone];//当地时区 6 NSString *abbStr1 = [localTimeZone abbreviation]; 7 NSLog(@"%@",abbStr1); 8 //和格林尼治时间差 9 NSInteger timeOff = [zone secondsFromGMT]; 10 NSLog(@"%ld",timeOff/60/60);//输出8 11 //时差转化 12 NSDate *date = [[NSDate date] dateByAddingTimeInterval:timeOff/*8小时*/];//加上时间差 13 NSLog(@"%@****%@",date,[NSDate date]);
解决字符串转换为时间出现的时差问题
1 //方法一 2 NSString *str=@"2015-11-3 10:20:00"; 3 NSDateFormatter *foma=[[NSDateFormatter alloc]init]; 4 [foma setDateFormat:@"yyyy-MM-dd hh:mm:ss"]; 5 NSDate *date=[foma dateFromString:str]; 6 NSLog(@"%@",date);//2015-11-03 02:20:00 +0000 7 NSInteger timeoff=[[NSTimeZone systemTimeZone]secondsFromGMT];//计算出时间差 8 date=[date dateByAddingTimeInterval:timeoff];//为解决字符串转换为时间时出现的时差而生 9 NSLog(@"%@",date);//2015-11-03 10:20:00 +0000 10 //方法二 11 // 将时区设置为UTC国际校准时间 12 NSString *str=@"2015-11-3 10:20:00"; 13 NSDateFormatter *foma=[[NSDateFormatter alloc]init]; 14 [foma setDateFormat:@"yyyy-MM-dd hh:mm:ss"]; 15 [foma setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]]; 16 NSDate *date1=[foma dateFromString:str]; 17 NSLog(@"%@",date1); 18 //方法三 19 NSString *str=@"2015-11-3 10:20:00"; 20 NSDateFormatter *foma=[[NSDateFormatter alloc]init]; 21 [foma setDateFormat:@"yyyy-MM-dd hh:mm:ss"]; 22 [foma setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; 23 NSDate *date1=[foma dateFromString:str]; 24 NSLog(@"%@",date1);