NSDate
创建一个时间对象
NSDate *date =[NSDate date];
//TimeInterval:时间间隔
//创建一个时间对象,比date这个时间对象万5秒
NSDate *date2 = [NSDate dateWithTimeInterval:5 sinceDate:date];
//创建一个时间对象,比当前时间晚5秒
NSDate *date3 = [NSDate dateWithTimeIntervalSinceNow:5];
从1970开始走过的秒数
NSDate *date = [NSDate date];
NSTimeInterval seconds = [date timeIntervalSince1970];
NSLog(@"%f",seconds);
输出结果:
2015-03-15 11:45:27.893 nsdate[1841:17962] 1426391127.893070
时间距离代码运行的时间间隔有多少秒
NSDate *date = [NSDate date];
NSTimeInterval seconds = [date timeIntervalSinceNow];
NSLog(@"%f",seconds);
时间的格式化
时间若要显示到手机屏幕上,则需要将时间先转化为字符串
NSDate *date = [NSDate date];
//日期格式化类:NSDateFormatter
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
//设置日期格式
formatter.dateFormat = @"yyyy-MM-dd hh:mm:ss";
//将时间转化为字符串
NSString *str = [formatter stringFromDate:date];
//输出时间
NSLog(@"%@",str);
输出结果:
2015-03-15 12:05:56.843 nsdate[2572:25542] 2015-03-15 12:05:56
转换日期的格式
转换须知:y年 M月 d日 m分 s秒 H时(24小时制) h时(12小时制)
NSDate *date = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
//格式1:
formatter.dateFormat = @"yyyy-MM-dd hh:mm:ss";
NSString *str1 = [formatter stringFromDate:date];
NSLog(@"str1:%@",str1);
//格式2:
formatter.dateFormat = @"yyyy年M月d日 h时m分s秒";
NSString *str2 = [formatter stringFromDate:date];
NSLog(@"str2:%@",str2);
输出结果:
2015-03-15 12:17:19.105 nsdate[2936:29501] str1:2015-03-15 12:17:19
2015-03-15 12:17:19.105 nsdate[2936:29501] str2:2015年3月15日 12时17分19秒
NSString转换为时间
NSString *time = @"2015-3-15 12:10";
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
formatter.dateFormat = @"yyyy-MM-dd HH:mm";
//字符串转换为时间
NSDate *date = [formatter dateFromString:time];
NSNumber
NSNumber的作用:
将非oc对象的基本类型包装成NSNumber对象。你可能会问,为什么要包装成NSNumber对象呢?在oc中,很多情况下不能用基本数据类型,必须用oc对象。比如:NSArray、NSMutableArray、NSDictionary、NSMutableDictionary、NSSet、NSMutableSet……中添加的元素必须是oc对象,而不能是基本数据类型。
基本数据类型:
- int
- float
- double
- char
NSNumber的创建
NSNumber *n1 = [NSNumber numberWithInt:10];
NSNumber *n2 = [NSNumber numberWithDouble:10.1];
NSNumber *n3 = [NSNumber numberWithFloat:10.1];
NSNumber *n4 = [NSNumber numberWithChar:'A'];
//将NSNumber对象转换成基本数据类型
int data1 = [n1 intValue];
double data2 = [n2 doubleValue];
float data3 = [n3 floatValue];
char data4 = [n4 charValue];
根据编译器的特性,NSNumber的创建可以简写成
NSNumber *n5 = @20;
//上面的一行代码和下面的代码等效
NSNumber *n6 = [NSNumber numberWithInt:20];
根据@20是NSNumber对象,则可以添加到数组中
//23是年龄,chenfanfang是姓名
NSArray *array = @[
@23,
@"chenfanfang"
];
//取出元素并且输出
int age = [array[0] intValue];
NSString *name = array[1];
NSLog(@"age:%d",age);
NSLog(@"name:%@",name);
输出结果:
2015-03-14 22:16:40.616 Nsnumber[1674:17330] age:23
2015-03-14 22:16:40.617 Nsnumber[1674:17330] name:chenfanfang
字符的注意事项
- @’A’ 是NSNumber对象
- @”A” 是NSString对象
NSString部分功能也类似于NSNumber
NSString *str1 = @"20";
NSString *str2 = @"20.1";
NSString *str3 = @"23.1";
int data1 = [str1 intValue];
float data2 = [str2 floatValue];
double data3 = [str3 doubleValue];
NSNumber继承了NSValue
NSNumber之所以能包装基本数据类型为对象,是因为继承了NSValue
NSValue能包装任何基本数据,包括结构体
NSValue包装结构体事例:
CGPoint p = CGPointMake(10, 10);
NSValue *value = [NSValue valueWithPoint:p];
NSArray *array = @[value];
//取出结构体
CGPoint p2 = [array[0] pointValue];
NSLog(@"x = :%f y = :%f",p2.x,p2.y);
输出结果:
2015-03-14 23:02:13.725 Nsnumber[3093:31466] x = :10.000000 y = :10.000000