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