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);